過濾器實慄 登錄檢測

項目結構

過濾器實慄 登錄檢測

代碼如下

登錄servlet

package com.ming.servlrt;
import com.ming.factory.DAOFactory;
import com.ming.vo.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = "login.jsp";
// 接收userid內容
String userid = req.getParameter("userid");
// 接收userpass內容
String userpadd = req.getParameter("userpass");
// 保存返回信息
List<string> info = new ArrayList<string>();
if(userid == null || "".equals(userid)){
info.add("用戶id不能為空");
}
if(userpadd == null || "".equals(userpadd)){
info.add("密碼不能為空");
}
// 報錯信息為0進行驗證
if(info.size() == 0){
User user = new User();
user.setUserid(userid);
user.setPassword(userpadd);
try{
if(DAOFactory.getIuserDAOInstance().findLogin(user)){
info.add("登錄成功!" + user.getName());
// 增加session會話
HttpSession session = req.getSession();
session.setAttribute("id", userid);
}else{
info.add("登錄失敗");
}
}catch (Exception e){
e.printStackTrace();
}
}
// 使用服務器端跳轉, 保存數據
req.setAttribute("info", info);
req.getRequestDispatcher(path).forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
/<string>/<string>

對於登錄的servlet增加了session

過濾器如下

package com.ming.filter;

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

import java.io.IOException;

// 首頁過濾器

public class LoginFile implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

// 轉型 因為默認的ServletRequest中未提供相關的方法,需要向下轉型

HttpServletRequest request = (HttpServletRequest)servletRequest;

// 獲取到session

HttpSession session = request.getSession();

// 判斷登錄

if(session.getAttribute("id") != null){

// 已經登錄

filterChain.doFilter(servletRequest, servletResponse);

}else{

// 跳轉登錄頁登錄

request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse);

}

}

@Override

public void destroy() {

}

}

配置文件如下

br> "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application/<display-name>
<filter>
<filter-name>LoginFile/<filter-name>
<filter-class>com.ming.filter.LoginFile/<filter-class>
/<filter>
<filter-mapping>
<filter-name>LoginFile/<filter-name>
<url-pattern>/index.jsp/<url-pattern>
/<filter-mapping>
<servlet>
<servlet-name>login/<servlet-name>
<servlet-class>com.ming.servlrt.LoginServlet/<servlet-class>
/<servlet>
<servlet-mapping>
<servlet-name>login/<servlet-name>
<url-pattern>/loginServlet/<url-pattern>
/<servlet-mapping>
/<web-app>

jsp文件如下

涉及 前端的js驗證

採用攔截click事件


Created by IntelliJ IDEA.
User: ming
Date: 19-3-16
Time: 下午11:07
To change this template use File | Settings | File Templates.
--%>



<title>Title/<title>


用戶登錄程序


List<string> info = (List<string>)request.getAttribute("info");
if(info != null){
Iterator<string> iterator = info.iterator();
while(iterator.hasNext()){
%>


}
}
%>




/<string>/<string>/<string>


分享到:


相關文章: