jsp中获取不到servlet中的ArrayList

jsp中获取不到servlet中的ArrayList

错误原因:

因为servlet尽管将请求转发(重定向)到其他页面,但是仍会执行完请求转发后面的代码。jsp也是servlet所以也遵循这个原则!

错误样例:
在这里插入图片描述

代码样例:

在这里插入图片描述

在这里插入图片描述

经过反复试验都证明jsp请求到了servlet,servlet也将信息转发到了jsp页面。但是为什么在获取jsp中的ArrayList时会空指针异常?

排错过程:

在这里插入图片描述

加了一段输出students的代码,去掉错误的for。结果为:

在这里插入图片描述

结果发现输出了一次null,第二次才输出students。判断得出jsp执行了两次,在第一次时尽管跳转了但是跳转后的代码仍执行了一遍,所以显示null会报空指针异常。

解决方法:
在这里插入图片描述

加个判断,在servlet返回students后再执行输出代码。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要结合JSP实现浏览记录功能,可以将浏览历史记录存储在Session,然后在JSP页面将其输出。具体实现代码如下: BrowseHistoryServlet.java: ```java import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/history") public class BrowseHistoryServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String url = request.getHeader("Referer"); if (url != null && !url.isEmpty()) { HttpSession session = request.getSession(true); List<String> history = (List<String>) session.getAttribute("history"); if (history == null) { history = new ArrayList<String>(); } history.add(url); session.setAttribute("history", history); } request.getRequestDispatcher("/history.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } ``` history.jsp: ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>浏览历史记录</title> </head> <body> <h1>浏览历史记录</h1> <ul> <% HttpSession session = request.getSession(true); List<String> history = (List<String>) session.getAttribute("history"); if (history != null) { for (String h : history) { out.println("<li>" + h + "</li>"); } } %> </ul> </body> </html> ``` 这个Servlet会在每次HTTP请求时获取Referer头信息,并将它添加到Session的history列表。当用户访问history.jsp页面时,它会从Session获取浏览历史记录,并将其输出到页面。通过这种方式,我们就可以在JSP页面实现浏览记录功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值