编写登录表单处理程序,引人过滤器.统一处理所有请求编码,解决中文乱码问题。 实验步骤: (1) 编写一个用户请求表单页面loginform.html,供用户提供表单向服务器传递请求参数。 (2)编写处理请求参数的Servlet(CheckParamServlet. java),参考代码如下: (3)修改web.xml文件; (4)运行网页,输入用户名和口令,然后单击“提交”按钮,经CheckParamServlet处理后返回结果。 (5)编写一个过滤器EncodingFilter. java,改变请求编码,统一处理请求参数中文编码。 系统中是否启用过滤器可通过web.xml配置文件控制,实验时,注意观察过滤器启用和关闭两种情形的效果(不用过滤器时会产生中文乱码)。 (6)在web. xml文件中配置过滤器,加人编码参数utf-8。 实现过程、核心代码和实验效果:
时间: 2023-07-15 14:10:30 浏览: 155
对于步骤(1),可以创建一个名为 loginform.html 的文件,其中包含以下代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Form</title>
</head>
<body>
<h2>Login Form</h2>
<form action="CheckParamServlet" method="post">
<label for="username">Username:</label>
<input type="text" id="username" name="username"><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
对于步骤(2),可以创建一个名为 CheckParamServlet.java 的文件,其中包含以下代码:
```java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/CheckParamServlet")
public class CheckParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
out.println("<html><head><title>Login Result</title></head><body>");
if (username.equals("admin") && password.equals("admin")) {
out.println("<h2>Login Success</h2>");
} else {
out.println("<h2>Login Failed</h2>");
}
out.println("</body></html>");
out.close();
}
}
```
对于步骤(3),可以修改 web.xml 文件,加入以下代码:
```xml
<servlet>
<servlet-name>CheckParamServlet</servlet-name>
<servlet-class>CheckParamServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CheckParamServlet</servlet-name>
<url-pattern>/CheckParamServlet</url-pattern>
</servlet-mapping>
```
对于步骤(4),可以在浏览器中输入 loginform.html 的网址,然后输入用户名和密码,点击“提交”按钮,就会跳转到 CheckParamServlet 的处理页面,显示登录结果。
对于步骤(5),可以创建一个名为 EncodingFilter.java 的文件,其中包含以下代码:
```java
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}
```
对于步骤(6),可以修改 web.xml 文件,加入以下代码:
```xml
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
```
这样就完成了登录表单处理程序的编写和引入过滤器,解决中文乱码问题。
阅读全文