实现功能: 用户在第一个页面输入数字一,在第二个页面输入数字二,第三个页面显示:“数字一 + 数字二 = 和”。 要求: 使用Filter技术对用户提交的数字进行校验,如果用户输入的是非阿拉伯数字,提示用户重新输入。
时间: 2024-03-17 22:41:18 浏览: 154
好的,我理解了你的要求,下面是我的回答:
实现这个功能,你需要在web.xml文件中配置一个Filter,用于拦截用户提交的数字并进行校验。下面是一个简单的示例:
1. 创建一个名为NumberFilter的Filter类,代码如下:
```
public class NumberFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化方法
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 获取用户提交的数字
String number = request.getParameter("number");
// 判断是否为阿拉伯数字
if (!isArabicNumber(number)) {
// 如果不是阿拉伯数字,则提示用户重新输入
request.setAttribute("errorMsg", "请输入阿拉伯数字!");
request.getRequestDispatcher("/error.jsp").forward(request, response);
return;
}
// 如果是阿拉伯数字,则继续执行
chain.doFilter(request, response);
}
@Override
public void destroy() {
// 销毁方法
}
/**
* 判断是否为阿拉伯数字
*/
private boolean isArabicNumber(String number) {
if (number == null || number.trim().equals("")) {
return false;
}
// 使用正则表达式判断是否为阿拉伯数字
String pattern = "^[0-9]*$";
return number.matches(pattern);
}
}
```
2. 在web.xml文件中配置该Filter,代码如下:
```
<filter>
<filter-name>NumberFilter</filter-name>
<filter-class>com.example.filter.NumberFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NumberFilter</filter-name>
<url-pattern>/submit</url-pattern>
</filter-mapping>
```
3. 创建一个名为submit.jsp的页面,用于提交数字。代码如下:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Submit</title>
</head>
<body>
<form action="result.jsp" method="post">
<label>数字一:</label>
<input type="text" name="number1"><br>
<label>数字二:</label>
<input type="text" name="number2"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
4. 创建一个名为result.jsp的页面,用于显示计算结果。代码如下:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result</title>
</head>
<body>
<%-- 获取用户提交的数字 --%>
<% String number1 = request.getParameter("number1"); %>
<% String number2 = request.getParameter("number2"); %>
<%-- 计算和 --%>
<% int sum = Integer.parseInt(number1) + Integer.parseInt(number2); %>
<%-- 显示结果 --%>
<p><%= number1 %> + <%= number2 %> = <%= sum %></p>
</body>
</html>
```
5. 创建一个名为error.jsp的页面,用于显示错误信息。代码如下:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Error</title>
</head>
<body>
<p><%= request.getAttribute("errorMsg") %></p>
<a href="submit.jsp">返回</a>
</body>
</html>
```
现在,你可以启动你的web应用程序,并访问submit.jsp页面,输入数字并提交。如果用户输入了非阿拉伯数字,将会提示用户重新输入。如果用户输入的是阿拉伯数字,则会跳转到result.jsp页面,显示计算结果。
阅读全文