用过滤器解决MVC添加书本信息时的登录安全问题

一:View  addBook.jsp

    

复制代码
 1 <%@page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="java.util.*" import="nuc.sw.EL.bean.EL"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="ELServlet" method="post">
11  <table  align="left" >
12  <tr>
13   <td>书名:</td>
14   <td><input type="text" name="bookName"></td>
15  </tr>
16  <tr>
17   <td>作者:</td>
18   <td><input type="text" name="authorName"></td>
19  </tr>
20  <tr>
21   <td>定价:</td>
22   <td><input type="text" name="bookPrice"></td>
23  </tr>
24  <tr>
25   <td><input type="submit" value="添加"></td>
26  </tr>
27 </table>
28 </form>
29 </body>
30 </html>
复制代码

二:Model  nuc.sw.EL.bean   EL.java

复制代码
 1 package nuc.sw.EL.bean;
 2 
 3 public class EL {
 4   private String bookName;
 5   private String authorName;
 6   private float bookPrice;
 7 public String getBookName() {
 8     return bookName;
 9 }
10 public void setBookName(String bookName) {
11     this.bookName = bookName;
12 }
13 public String getAuthorName() {
14     return authorName;
15 }
16 public void setAuthorName(String authorName) {
17     this.authorName = authorName;
18 }
19 public Float getBookPrice() {
20     return bookPrice;
21 }
22 public void setBookPrice(Float bookPrice) {
23     this.bookPrice = bookPrice;
24 }
25   
26 }
复制代码

三:Control   nuc.sw.EL.servlet   ELServlet.java

复制代码
 1 package nuc.sw.EL.servlet;
 2 
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import javax.servlet.ServletException;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 import nuc.sw.EL.bean.EL;
13 
14 /**
15  * Servlet implementation class ELServlet
16  */
17 public class ELServlet extends HttpServlet {
18     private static final long serialVersionUID = 1L;
19        
20     /**
21      * @see HttpServlet#HttpServlet()
22      */
23     public ELServlet() {
24         super();
25         // TODO Auto-generated constructor stub
26     }
27 
28     /**
29      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
30      */
31     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
32         // TODO Auto-generated method stub
33         response.getWriter().append("Served at: ").append(request.getContextPath());
34     }
35 
36     /**
37      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
38      */
39     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40         // TODO Auto-generated method stub
41         //doGet(request, response);
42         EL el=new EL();
43         el.setBookName(request.getParameter("bookName"));
44         el.setAuthorName(request.getParameter("authorName"));
45         el.setBookPrice(Float.parseFloat(request.getParameter("bookPrice")));
46         //request.setAttribute("el", el);
47         List<EL> list;
48         if(request.getSession().getAttribute("booklist")==null){
49             list= new ArrayList<EL>();
50             list.add(el);
51         }
52         else{
53             list=(ArrayList<EL>)request.getSession().getAttribute("booklist");
54             list.add(el);
55         }
56         
57         request.getSession().setAttribute("booklist", list);
58         request.getRequestDispatcher("showBookInfo.jsp").forward(request, response);
59         //request.getRequestDispatcher("addBook.jsp").forward(request, response);
60     }
61 
62 }
复制代码

四:显示书本信息 showBookInfo.jsp

复制代码
 1 <%@page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="java.util.*,nuc.sw.EL.bean.EL"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <table  align="right" border="1">
11          <caption>全部书籍信息</caption>
12          <tr>
13           <td>书名:</td>
14           <td>作者:</td>
15          <td>定价:</td>
16   </tr>
17   <% 
18         Iterator<EL> iter=((ArrayList<EL>)session.getAttribute("booklist")).iterator();  
19         while(iter.hasNext()){
20           pageContext.setAttribute("book",iter.next());
21    %>
22      
23     <tr>
24       <td>${book.bookName} </td>
25       <td>${book.authorName} </td>
26       <td>${book.bookPrice} </td>
27    </tr>    
28 <%
29     }
30 %>
31 
32 </table>
33 <a href="addBook.jsp">继续添加</a>
34 </body>
35 </html>
复制代码

五:设置汉字乱码  nuc.sw.book.filter   EncodingFilter.java

复制代码
 1 package nuc.sw.book.filter;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.Filter;
 5 import javax.servlet.FilterChain;
 6 import javax.servlet.FilterConfig;
 7 import javax.servlet.ServletException;
 8 import javax.servlet.ServletRequest;
 9 import javax.servlet.ServletResponse;
10 
11 /**
12  * Servlet Filter implementation class EncodingFilter
13  */
14 public class EncodingFilter implements Filter {
15 
16     /**
17      * Default constructor. 
18      */
19     public EncodingFilter() {
20         // TODO Auto-generated constructor stub
21     }
22 
23     /**
24      * @see Filter#destroy()
25      */
26     public void destroy() {
27         // TODO Auto-generated method stub
28     }
29 
30     /**
31      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
32      */
33     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
34         // TODO Auto-generated method stub
35         // place your code here
36 
37         // pass the request along the filter chain
38         request.setCharacterEncoding("utf-8");
39         chain.doFilter(request, response);
40     }
41 
42     /**
43      * @see Filter#init(FilterConfig)
44      */
45     public void init(FilterConfig fConfig) throws ServletException {
46         // TODO Auto-generated method stub
47     }
48 
49 }
复制代码

六:登陆页面  login.jsp

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>登录页面</title>
 8 </head>
 9 <body>
10  <font color="red">${requestScope.error}</font>
11  <form action="loginServlet" method="post" >
12   用户名:<input type="text" name="username"><br>
13   密码:<input type="text" name="password"><br>
14  <input type="submit" value="登录">
15  </form>
16 </body>
17 </html>

七:设置登录安全问题   nuc.sw.login.loginServlet  loginServlet.java

 1 package nuc.sw.login.LoginServlet;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 /**
10  * Servlet implementation class loginServlet
11  */
12 public class loginServlet extends HttpServlet {
13     private static final long serialVersionUID = 1L;
14        
15     /**
16      * @see HttpServlet#HttpServlet()
17      */
18     public loginServlet() {
19         super();
20         // TODO Auto-generated constructor stub
21     }
22 
23     /**
24      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
25      */
26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27         // TODO Auto-generated method stub
28         response.getWriter().append("Served at: ").append(request.getContextPath());
29     }
30 
31     /**
32      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
33      */
34     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35         // TODO Auto-generated method stub
36         //doGet(request, response);
37         
38         
39         String userName=request.getParameter("username");
40         String passWord=request.getParameter("password");
41         //判断用户名面是否正确。如果正确,直接去addBook.jsp;不正确,就跳回登录页面,提示框显示错误。
42         if(userName.equals("张丹")&&passWord.equals("123")){
43             //一次会话中,需要将信息放入Session中
44             request.getSession().setAttribute("user",userName);
45             request.getRequestDispatcher("addBook.jsp").forward(request, response);
46         }
47         else{
48             request.setAttribute("error","用户名或者密码错误");
49             request.getRequestDispatcher("login.jsp").forward(request, response);
50         }
51     }
52 
53 }

八:设置登录过滤问题  nuc.sw.book.filter  LoginFilter.java

 1 package nuc.sw.login.LoginServlet;
 2 
 3 import java.io.IOException;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 /**
10  * Servlet implementation class loginServlet
11  */
12 public class loginServlet extends HttpServlet {
13     private static final long serialVersionUID = 1L;
14        
15     /**
16      * @see HttpServlet#HttpServlet()
17      */
18     public loginServlet() {
19         super();
20         // TODO Auto-generated constructor stub
21     }
22 
23     /**
24      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
25      */
26     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27         // TODO Auto-generated method stub
28         response.getWriter().append("Served at: ").append(request.getContextPath());
29     }
30 
31     /**
32      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
33      */
34     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35         // TODO Auto-generated method stub
36         //doGet(request, response);
37         
38         
39         String userName=request.getParameter("username");
40         String passWord=request.getParameter("password");
41         //判断用户名面是否正确。如果正确,直接去addBook.jsp;不正确,就跳回登录页面,提示框显示错误。
42         if(userName.equals("张丹")&&passWord.equals("123")){
43             //一次会话中,需要将信息放入Session中
44             request.getSession().setAttribute("user",userName);
45             request.getRequestDispatcher("addBook.jsp").forward(request, response);
46         }
47         else{
48             request.setAttribute("error","用户名或者密码错误");
49             request.getRequestDispatcher("login.jsp").forward(request, response);
50         }
51     }
52 
53 }

九:运行结果

原文地址:https://www.cnblogs.com/Z-D-/p/5876367.html