java - 过滤器中的请求和响应是否与 servlet 中的相同?
问题描述
我正面临这个抛出的错误
“警告:StandardWrapperValve [AddServlet]:Servlet.service() for servlet > AddServlet 抛出异常 java.lang.NullPointerException”
我不确定这是否是由于 ServletRequest 的会话与 HttpServletRequest 的会话不同导致“正在检索结果”时导致 null 异常。
有什么建议可以解决这个问题吗?我正在考虑添加数字并使用过滤器检查结果是否超过 10
以下是我编写并运行的代码:
索引.html
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<form action="AddServlet" method="post">
Enter 1st number: <input type="text" name="num1"><br>
Enter 2nd number: <input type="text" name="num2"><br>
<input type="submit">
</form>
</body>
</html>
AddServlet.java
@WebServlet(urlPatterns = {"/AddServlet"})
public class AddServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//retrieve from HTML
int i = Integer.parseInt(request.getParameter("num1"));
int j = Integer.parseInt(request.getParameter("num2"));
int k = i+j;
System.out.println(k);
HttpSession session = request.getSession();
session.setAttribute("result", k);
out.print(k);
}
}
结果过滤器.java
@WebFilter(filterName = "ResultsFilter", urlPatterns = {"/AddServlet"})
public class ResultsFilter implements Filter {
public ResultsFilter() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
int ans = (int) session.getAttribute("result"); <-- error from here
System.out.println(ans);
if (ans <= 10) {
PrintWriter out = response.getWriter();
out.print("Result must be more than 10!");
} else {
chain.doFilter(request, response);
}
}
}
解决方案
推荐阅读
- javascript - 如何设置变量
- bash - 使用 fswatch 和 rsync 自动同步目录时找不到文件
- android - 无法从 Android WebView 拨打电话
- sql-server - 替换 SQL 透视查询中的空值
- jupyter-notebook - 配置 jupyter 仪表板服务器
- android - Windows 平台主题编辑器上的 Android Studio (3.3.1) 不起作用?
- powershell - Rename file with powershell (variable file name structure)
- php - 创建包含多个子数组的主数组
- python - 如何在 pandas python 中进行分组但保留数据框的顺序?
- haskell - 将“$”视为函数应用程序