Servlet實現日誌管理
//本文主要實現學員日誌管理功能,表單以及前端等樣式程式碼省略,主要servlet方法實現的功能的如下:
package com.softeem.dao; import java.util.List; public interface BaseDAO<T> { public boolean save(T t); public boolean delete(T t); public boolean update(T t); public T findById(int id); public T findProperty(T t); public List<T> findByProperties(T t); public List<T> findAll(); }
package com.softeem.servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.softeem.dao.impl.DailyDAO; import com.softeem.dto.Daily; import com.softeem.dto.Student; @WebServlet("/daily") public class DailyServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String flag = req.getParameter("flag"); switch(flag){ case "add": submit(req,resp); break; case "modify": modify(req,resp); break; case "queryAll": queryAll(req,resp); break; case "queryById": queryById(req,resp); break; } } private void queryById(HttpServletRequest req, HttpServletResponse resp) { // TODO Auto-generated method stub } private void queryAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //從session中取出當前使用者 Student stu = getSession(req); if(stu!=null){ //查詢當前學生的日誌 Daily d = new Daily(); d.setStudent(stu); DailyDAO dao = new DailyDAO(); List<Daily> list = dao.findByProperties(d); //將日誌集合快取到request中 req.setAttribute("list", list); req.getRequestDispatcher("dailyList.jsp").forward(req, resp); }else{ req.setAttribute("error", "你還沒有登入,請登入再試!"); req.getRequestDispatcher("login.jsp").forward(req, resp); } } private void modify(HttpServletRequest req, HttpServletResponse resp) { // TODO Auto-generated method stub } private void submit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //從session中取出學生物件,有資料代表已經登入 Student stu = getSession(req); if(stu!=null){ String content = req.getParameter("content"); Daily daily = new Daily(); daily.setContent(content); daily.setStudent(stu); DailyDAO dao = new DailyDAO(); if(dao.save(daily)){ //成功後直接跳轉到列表頁面,顯示日誌列表 resp.sendRedirect("daily?flag=queryAll"); }else{ //失敗 } }else{ req.setAttribute("error", "你還沒有登入,請登入再試!"); req.getRequestDispatcher("login.jsp").forward(req, resp); } } //從session中獲取快取的當前登入學生資訊 private Student getSession(HttpServletRequest request){ Object obj = request.getSession().getAttribute("user"); return obj != null?(Student)obj:null; } }
package com.softeem.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.softeem.dao.impl.StudentDAO; import com.softeem.dto.Student; import com.softeem.encrypt.MD5; @WebServlet("/login") public class LoginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; public LoginServlet() { super(); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取表單資料(賬號,密碼) String sno = request.getParameter("username"); String pass = request.getParameter("password"); Student stu = new Student(); stu.setSno(sno); stu.setPassword(pass); StudentDAO dao = new StudentDAO(); stu = dao.findProperty(stu); //對提交的密碼加密 // MD5 md5 = new MD5(); // pass = md5.getMD5ofStr(pass); if(stu != null){ if(stu.getPassword().equals(pass)){ //成功 //將登入的學生資訊儲存到session中 request.getSession().setAttribute("user", stu); response.sendRedirect("index.jsp"); }else{ //密碼錯誤 request.setAttribute("error", "密碼錯誤"); request.getRequestDispatcher("login.jsp").forward(request, response); } }else{ //學號錯誤 request.setAttribute("error", "學號錯誤"); request.getRequestDispatcher("login.jsp").forward(request, response); } } }
package com.softeem.utils;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Properties;
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
/**
* DBCP資料庫連線工具類
* 依賴
* 1.mysql驅動
* 2.dbcp相關外掛
* @author mrchai
*
*/
public class DBUtils {
//連線資料庫基本屬性
private static String driverClass="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://127.0.0.1:3306/oa";
private static String username="root";
private static String password="123456";
//連線池屬性
private static int initSize=10;
private static int maxSize=50;
private static int maxIdle=30;
private static long maxWait=10000;
//資料來源
private static BasicDataSource bds;
//初始化資料來源配置
static{
init();
}
public static void init(){
try {
//建立資料來源物件
bds = new BasicDataSource();
//載入屬性檔案,獲取屬性資訊
Properties props = new Properties();
props.load(DBUtils.class.getResourceAsStream("jdbc.properties"));
driverClass = props.getProperty("driver");
url = props.getProperty("url");
username = props.getProperty("user");
password = props.getProperty("password");
initSize = Integer.parseInt(props.getProperty("initSize"));
maxSize = Integer.parseInt(props.getProperty("maxSize"));
maxIdle = Integer.parseInt(props.getProperty("maxIdle"));
maxWait = Long.parseLong(props.getProperty("maxWait"));
//設定驅動類路徑
bds.setDriverClassName(driverClass);
//設定url
bds.setUrl(url);
//設定使用者名稱
bds.setUsername(username);
//設定密碼
bds.setPassword(password);
//設定初始連線數
bds.setInitialSize(initSize);
//設定最大連線
bds.setMaxTotal(maxSize);
//設定最大閒置連線數
bds.setMaxIdle(maxIdle);
//等待獲取連線的最大時間(MS)
bds.setMaxWaitMillis(maxWait);
} catch (Exception e) {
e.printStackTrace();
}
}
//獲取連線
public static Connection getConn(){
try {
if(bds == null || bds.isClosed()){
init();
}
return bds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//封裝資源回收的方法
public static void close(ResultSet rs,Statement stat,Connection conn){
try {
if(rs != null) rs.close();
if(stat != null) stat.close();
if(conn != null)conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 通用增刪改
* @param conn
* @param sql
* @param objs
* @return
*/
public static boolean execUpdate(Connection conn,String sql,Object ...objs){
try {
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 0; i < objs.length; i++) {
ps.setObject(i+1, objs[i]);
}
int i = ps.executeUpdate();
return i>0 ? true:false;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
/**
* C++鉤子函式 回撥函式
* 集合查詢
* @param sql
* @param call
* @param params
* @return
*/
public static <T> List<T> queryList(String sql,CallBack<T> call,Object...params){
Connection conn = DBUtils.getConn();
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
for(int i = 0;i<params.length;i++)
{
ps.setObject(i+1, params[i]);
}
ResultSet rs = ps.executeQuery();
return call.getDatas(rs);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
/**
* 查詢一條記錄
* @param sql
* @param call
* @param params
* @return
*/
public static <T> T queryOne(String sql,CallBack<T> call,Object...params)
{
Connection conn = DBUtils.getConn();
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
for(int i = 0;i<params.length;i++)
{
ps.setObject(i+1, params[i]);
}
ResultSet rs = ps.executeQuery();
return call.getData(rs);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//查詢返回介面 jdk1.8支援
// public interface CallBack<T>{
// default List<T> getDatas(ResultSet rs){
// return null;
// }
// default T getData(ResultSet rs){
// return null;
// }
// }
//jdk1.8以下使用抽象類
public static abstract class CallBack<T>{
public List<T> getDatas(ResultSet rs){
return null;
}
public T getData(ResultSet rs){
return null;
}
}
public static void main(String[] args) {
System.out.println(getConn());
}
}
相關推薦
Servlet實現日誌管理
//本文主要實現學員日誌管理功能,表單以及前端等樣式程式碼省略,主要servlet方法實現的功能的如下: package com.softeem.dao; import java.util.List; public interface BaseDAO<T>
Spring AOP 自定義註解實現日誌管理
目錄 一、配置檔案 二、新建一個日誌實體類Log 三、編寫 service 層 四、編寫 service 層的實現 serviceimpl 五、自定義註解類 六、編寫切面類 七、spring + aop 需要的 jar 包 部落格的程式碼是基於 SSM 環境編寫的
spring-AOP+自定義註解實現日誌管理(註解方式實現)
一、場景 後臺管理系統中,管理員作業系統時生成日誌儲存在資料庫中。 二、實現 1、jar包依賴 <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --> <dependency&
springboot AOP 實現日誌管理
本文使用註解進行spring AOP的實現。 1.AOP的基本概念 (1)Aspect(切面):通常是一個類,裡面可以定義切入點和通知 (2)JointPoint(連線點):程式執行過程中明確的點,一般是方法的呼叫 (3)Advice(通知):AOP在特定的切入點上執
ssm框架搭建-整合logback實現日誌管理(spring5.0)
ssm(spring+springmvc+mybatis)框架搭建:整合mybatis-generato程式碼生成器,很純淨的基本搭建。 搭建環境:idea+Tomcat 8+jdk 8 用Maven進行管理 1.專案結構: 2.檔案對應說明,在readme裡
《SpringBoot學習篇》(5)AOP+自定義註解實現日誌管理
用到的AOP註解:@Aspect @Pointcut @After 首先看一下如何呼叫自定義註解: @MyLog(module="老師模組", method="查詢全部") @RequestMapping("/all") public List
nginx使用syslog實現日誌管理
#向主機192.168.1.137:88;傳輸日誌檔案 access_log syslog:server=192.168.1.137:88 main; //連結日誌 error_log syslog:se
Spring Boot 整合 log4j2 實現日誌管理
摘要:上一篇,我們講了Spring Boot 整合 log4j實現日誌管理,這一篇接著說一下Spring Boot 整合 log4j2,。 一:還是新建一個java工程: 二:增加log4j2的pom.xml配置,如下: <project xmlns="htt
Spring Boot 整合 log4j 實現日誌管理報錯:java.lang.IllegalArgumentException: LoggerFactory is not a Logback
問題: Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Log
Spring Boot 整合 log4j 實現日誌管理
摘要:最近有時間,系統的學習了一下Spring Boot框架,感覺Spring Boot很好的集成了各種框架和元件,之前我們用Spring的時候,要配置好的依賴和xml檔案,現在使用Spring Boot,只需要一些少量的配置就可以實現。今天我們來看下Spring Boot
SpringAOP攔截Controller,Service實現日誌管理(自定義註解的方式)
首先我們為什麼需要做日誌管理,在現實的上線中我們經常會遇到系統出現異常或者問題。這個時候就馬上開啟CRT或者SSH連上伺服器拿日子來分析。受網路的各種限制。於是我們就想為什麼不能直接在管理後臺檢視報錯的資訊呢。於是日誌管理就出現了。 其次
Spring AOP攔截Service實現日誌管理(自定義註解的方式)
最近專案中用到AOP方式進行Service操作方法日誌管理,特為之記! 1、先說理論和採用的方法 採用註解的方式,其中包括以下註解:@Aspect(類註解)和@AfterReturning(方法註解),其中需要用的Maven庫如下: "org.aspectj:aspect
自定義註解實現日誌管理
首先定義一個註解: @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) @Documented public @interface LogAnnotation { //模組
Spring的AOP實現日誌管理操作
關於這個aop,有時候面試官會經常問道這類的問題,比如說,你使用aop來實現日誌管理,那麼你的aop實現的時候,怎麼來獲取到你要的引數,如何還有你現在執行的操作命令? 今天就對這個問題進行測試解答。 文章宣告:此文章僅供測試,如有功能不全請諒解。 讀者最好對通知類,切入
SpringAOP攔截Controller,Service實現日誌管理(自定義註解的方式)(轉載)
http://langgufu.iteye.com/blog/2235556 首先我們為什麼需要做日誌管理,在現實的上線中我們經常會遇到系統出現異常或者問題。這個時候就馬上開啟CRT或者SSH連上伺服器拿日子來分析。受網路的各種限制。於是我們就想為什麼不能直接在
日誌管理之小實驗:實現loganalyzer
spa 16px www oracle createdb analyzer name yum quick 實驗目的:以報表圖形格式展示數據庫,便於觀看和理解 實驗工具:三臺主機(A主機:centos7--配置數據庫 B主機:centos6--記錄日誌 C主機:ce
基於LAMP實現web日誌管理查看
日誌 web 管理 前言:日誌是一個重要的信息庫,如何高效便捷的查看系統中的日誌信息,是系統管理員管理系統的必備的技術。實現方式: 1、將日誌存儲於數據庫。 2、采用LAMP架構,搭建PHP應用,通過web服務訪問數據庫,提取日誌信息,展現到web頁面。基本結構圖:一、搭建日誌服務器
SpringAOP+註解實現簡單的日誌管理
vax 技術 eight 如果 日誌類 lex 時間 str component 今天在再次深入學習SpringAOP之後想著基於註解的AOP實現日誌功能,在面試過程中我們也經常會被問到:假如項目已經上線,如何增加一套日誌功能?我們會說使用AOP,AOP也符合開
基於WebGIS的Web服務器日誌管理系統設計與實現_愛學術——免費下載
富客戶端 平臺 .com 服務器日誌 操作 shu 實現 c51 bsp 【摘要】WebGIS優勢是通過互聯網對地理空間數據進行發布和應用,以實現空間數據的共享和相互操作。將WebGIS和富客戶端技術引入Web服務器日誌管理領域,從總體設計、數據庫設計、實現框架等幾個方面設
Jeecg中通過Spring_AOP+註解方式實現日誌的管理
Jeecg中通過Spring_AOP+註解方式實現日誌的管理 一、設計思路 通過spring的aop切面功能,攔截到請求的所有的符合切面表示式的方法,判斷是否含有註解標誌,生成日誌物件,然後通過aop的後置通知進行日誌的持久