实现功能: 用户在第一个页面输入数字一,在第二个页面输入数字二,第三个页面显示:“数字一 + 数字二 = 和”。 要求: 使用Filter技术对用户提交的数字进行校验,如果用户输入的是非阿拉伯数字,提示用户重新输入。 考核目标: Filter的使用 1. 实现思路和代码
时间: 2024-03-17 19:41:00 浏览: 89
基于jquery的设置页面文本框 只能输入数字的实现代码
实现思路:
1. 创建一个Filter,在其中对用户提交的数字进行校验。
2. 在web.xml文件中配置Filter的映射路径,使得用户提交的数字通过该Filter进行校验。
3. 如果用户输入的是非阿拉伯数字,将请求转发到一个错误页面,提示用户重新输入。
4. 如果用户输入的是阿拉伯数字,则继续执行后续的业务逻辑,计算数字之和并将结果显示在第三个页面中。
代码实现:
1. 创建一个Filter,代码如下:
```java
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
@WebFilter(filterName = "NumberFilter", urlPatterns = { "/page2", "/page3" })
public class NumberFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String number = httpRequest.getParameter("number");
if (number.matches("\\d+")) {
chain.doFilter(request, response);
} else {
RequestDispatcher dispatcher = httpRequest.getRequestDispatcher("/error.jsp");
dispatcher.forward(request, response);
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
public void destroy() {
}
}
```
2. 在web.xml文件中配置Filter的映射路径,代码如下:
```xml
<filter>
<filter-name>NumberFilter</filter-name>
<filter-class>NumberFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NumberFilter</filter-name>
<url-pattern>/page2</url-pattern>
<url-pattern>/page3</url-pattern>
</filter-mapping>
```
3. 在第二个页面和第三个页面中,获取用户输入的数字并进行处理,代码如下:
第二个页面:
```html
<form action="page3" method="post">
<label for="number2">数字二:</label>
<input type="text" id="number2" name="number" />
<input type="submit" value="计算和" />
</form>
```
第三个页面:
```java
int number1 = Integer.parseInt(request.getParameter("number1"));
int number2 = Integer.parseInt(request.getParameter("number2"));
int sum = number1 + number2;
response.getWriter().println(number1 + " + " + number2 + " = " + sum);
```
4. 创建一个错误页面,提示用户重新输入,代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Error</title>
</head>
<body>
<p>您输入的不是数字,请重新输入!</p>
</body>
</html>
```
这样,就完成了使用Filter技术对用户输入进行校验的功能实现。如果用户输入的是非阿拉伯数字,会被重定向到错误页面,提示用户重新输入;如果用户输入的是阿拉伯数字,则会继续执行后续的业务逻辑,计算数字之和并将结果显示在第三个页面中。
阅读全文