MyEclipse——过滤器中html页面无法跳转运行

        今天弄了过滤器的实验,一直就是运行,但无法跳转,情况如下:

 

 

 

这个多试几次就好了。注意上一篇提到的servlet中的地址映射要一致

1、添加过滤器代码:

 

2、在之前创建的servlet基础上的,添加以下东西:

参考实验如:

编写一个过滤器改变请求编码。

【步骤 1】编写一个 loginform.html 文件,代码如下:

<!DOCTYPE html>

<html>

  <head>

    <title>loginform.html</title>



    <meta name="keywords" content="keyword1,keyword2,keyword3">

    <meta name="description" content="this is my page">

    <meta name="content-type" content="text/html; charset=GB18030">

    

    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->



  </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 hu;



import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

@SuppressWarnings("serial")

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 文件,加入下面代码:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <servlet>

    <description>This is the description of my J2EE component</description>

    <display-name>This is the display name of my J2EE component</display-name>

    <servlet-name>CheckParamServlet</servlet-name>

    <servlet-class>hu.CheckParamServlet</servlet-class>

  </servlet>



  <servlet-mapping>

    <servlet-name>CheckParamServlet</servlet-name>

    <url-pattern>/servlet/CheckParamServlet</url-pattern>

  </servlet-mapping>



</web-app>

【步骤 4】在浏览器的地址栏中输入下面 URL:

 http://localhost:8080/ helloapp/loginform.html

 输入用户名和口令,如下图所示:

图 14.1 loginform.html 页面的运行结果

 

 

 

然后点击“提交”按钮,经 CheckParamServlet 处理后返回的结果如下图所示::

图 14.2 Check程序的运行结果

 

从这里我们可以看到,从服务器返回的汉字成了乱码。原因是没有指定 request 的编

码。

下面通过编写一个过滤器改变请求编码。

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

 

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

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

  <servlet>

    <description>This is the description of my J2EE component</description>

    <display-name>This is the display name of my J2EE component</display-name>

    <servlet-name>CheckParamServlet</servlet-name>

    <servlet-class>hu.CheckParamServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>CheckParamServlet</servlet-name>

    <url-pattern>/servlet/CheckParamServlet</url-pattern>

  </servlet-mapping>




以下是添加的代码:
  <filter>

    <filter-name>guo</filter-name>

    <filter-class>filter.guo</filter-class>

    <init-param>

      <param-name>Encoding</param-name>

      <param-value>gb2312</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>guo</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping>

</web-app>



【步骤 7】重复第(4)步操作,结果如下:

EncodingFilter 程序的运行结果

 

 

 

 

 

 

 

 

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页