当前位置:文档之家› 实验五、过滤器与监听器

实验五、过滤器与监听器

实验五:过滤器与监听器一、实验目的1.掌握过滤器的创建与配置方法;2.掌握监听器的创建与配置方法;二、实验内容2.1 创建Web项目1. 打开MyEclipse,创建一个Web Project,命名为ServletTest。

2.1 SecurityFilter详细过程见securityFilter.rmvb1.过滤器SecurityFilter的代码如下:package filters;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class SecurityFilter implements Filter {private FilterConfig filterConfig;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request;// 获得用户输入的密码String pwdInput = httpRequest.getParameter("password");// 获得filter配置参数中的rightpass的值String rightPwd = filterConfig.getInitParameter("rightpass");if (!rightPwd.equals(pwdInput)) {PrintWriter out = response.getWriter();out.println("<h3>Wrong password! Please try again.</h3>");out.flush();return;}filterChain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;}}2.LoginServlet的主要代码如下:package servlets;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet {/*** Constructor of the object.*/public LoginServlet() {super();}/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();HttpSession session = request.getSession();session.setAttribute("username", request.getParameter("username"));out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.println("<h3>Welcome, " + request.getParameter("username") + ", you are logged in.</h3>");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the POST method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here}}3.新建login.jsp,用于进行登录测试,代码如下:<%@page language="java"import="java.util.*"pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录页面</title></head><body><p>This example shows you how the security filter is used to protect the LoginServlet. Pleaseenter the password and click the submit button to see results(correct password is "hello"):</p><form action="servlet/LoginServlet"method="get"><input type="text"name="username"/> User Name<br/><input type="password"name="password"/> Password<br/><input type="submit"value="Login"/></form></body></html>4.测试运行:打开http://localhost:8080/ServletTest/login.jsp,输入正确的用户名与密码,查看网页结果回到login页面,输入错误的密码,再次查看网页结果。

相关主题