JAVA WEB Servlet过滤器

     

班级  软件工程16-1  学号  3162052051116  姓名  张识虔 同组实验者             

实验名称             Servlet过滤器                         日期 2018 11 1

一、实验目的:

 

  1. 了解过滤器的作用;
    2. 掌握过滤器的开发与部署的步骤;
    3. 了解过滤器链
  • 实验环境:
  • 实验内容:

 

过滤器是web服务器上的组件,它们对客户和资源之间的请求和响应进行过滤。
过滤器的工作原理是:当servlet容器接收到对某个资源的请求,它要检查是否有过滤器与之关联。如果有过滤器与该资源关联,servlet容器将把该请求发送给过滤器。在过滤器处理完请求后,它将做下面3件事:
• 产生响应并将其返回给客户;
• 如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;
• 将请求传递给不同的资源。
当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。
过滤器API主要包括:Filter、FilterConfig和FilterChain接口。

编写一个过滤器改变请求编码。
【步骤1】编写一个loginform.html文件,代码如下:

<!DOCTYPE html>
<html>
  <head>
    <title>loginform.html</title>
    

  </head>
  
  <body>
        <center>
        <h2>请输入用户名和口令:</h2>
        <form method="post" action="servlet/CheckParamServlet">
        <table>
        <tr>
        <td>用户名:</td>
        <td><input name="name" type="text"></td>
        </tr>
        <tr>
        <td>口 令:</td>
        <td><input name="pass" type="password"></td>
        </tr>
        <tr>
        <td></td>
        <td>
        <input name="ok" type="submit" value="提交">
        <input name="cancel" type="reset" value="重置">
        </td>
        </tr>
        </table>
        </form>
        </center>
</body>
</html>

【步骤2】编写处理请求参数的Servlet,代码如下

package servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CheckParamServlet extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String pass = request.getParameter("pass");
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Param Test</title></head>");
out.println("<h3 align=center>你的用户名为:"+name+"</h3>");
out.println("<h3 align=center>你的口令为:"+pass+"</h3>");
out.println("</body></html>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}

 

​【步骤3】修改web.xml文件,加入下面代码:

 

【步骤5】过滤器代码如下:

 

package filter;

    import java.io.IOException;

    import javax.servlet.*;

    public class EncodingFilter implements Filter {

    protected String encoding = null;

    protected FilterConfig config;

    public void init(FilterConfig filterConfig) throws ServletException {

    this.config = filterConfig;

    // 得到在web.xml中配置的编码

    this.encoding = filterConfig.getInitParameter("Encoding");

    }

    public void doFilter(

    ServletRequest request,

    ServletResponse response,

    FilterChain chain)

    throws IOException, ServletException {

    if (request.getCharacterEncoding() == null) {

    // 得到指定的编码

    String encode = getEncoding();

    if (encode != null) {

    //设置request的编码

    request.setCharacterEncoding(encode);

    response.setCharacterEncoding(encode);

    }

    }

    chain.doFilter(request, response);

    }

    protected String getEncoding() {

    return encoding;

    }

    public void destroy() {

    }

    }

​【步骤6】在web.xml文件中配置过滤器,加入下面代码:

运行结果

​​

猜你喜欢

转载自blog.csdn.net/qq_41398448/article/details/83833181