【问题标题】:How to run Servlet before running JSP page?如何在运行 JSP 页面之前运行 Servlet?
【发布时间】:2020-08-19 08:53:07
【问题描述】:

目标: 我只有一页,当页面加载时,它应该从 servlet 运行查询并在 index.jsp 页面上显示所有值。

存在的问题: 当我将页面从“提交”按钮提交到另一个页面时,它工作正常,但是当我加载页面 index.jsp 的值时,它会给出 NullPointerException,因为 servlet 没有在 index.jsp 页面之前运行。

我的小服务:

public class GetStudentController extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        StudentDao sd = new StudentDao();  // model
        StudentInfo si = sd.getInfo();

        request.setAttribute("si", si);

        RequestDispatcher rd = request.getRequestDispatcher("display.jsp");
        rd.forward(request, response);
}
}

我的 JSP:

<body>
<form action="displayStud">         <--my servlet controller name -->
Student id <input type="text" name = "sid">
<button name="test" type="submit"">Primary Button</button>
</body>
</html>

<button type="submit" class="btn btn-primary" name="action" formaction="ddd" value="find">Test2</button>
    <!-- <input type ="submit" value ="Submit"> -->
</form>

StudentDao 里面有查询

再次: 我只是希望它在页面加载时运行相同的代码并且所有数据都应该加载(不点击提交)

感谢您的帮助

【问题讨论】:

  • 因此,当您点击提交按钮时,导航器会使用正确的数据呈现 jsp(我看不到您如何访问 jsp 中的“si”属性),以及当您做“页面加载”,,什么是页面加载?刷新?这个链接对stackoverflow.com/questions/10898393/…有帮助吗?

标签: java html jsp


【解决方案1】:

您可以使用jstl或表达式语言在请求范围内设置的值。

request.setAttribute("si", si);

类似:

Student id <input type="text" name = "sid" value="${requestScope.si.id}">

【讨论】:

  • 问题不是设置值,问题是在加载.jsp页面之前运行servlet
  • 你应该先调用servlet uri。你应该把它映射到web.xml docs.oracle.com/cd/E13222_01/wls/docs92/webapp/…
  • 我的 servlet 标记已经在 xml 中,但仍然给出空指针 ex.
  • 相信你没有忘记添加需要的jar。请通过tutorialspoint.com/jsp/jsp_standard_tag_library.htm 并检查可能缺少的内容。也只是为了给您一个概述,您的 servlet 使用 URL 模式映射到 web.xml 中,当您在浏览器中点击一个 URL 时,它会发出一个 GET 请求,该请求将在 servlet 上调用此 doGet 方法。此方法会将请求与数据一起转发给 JSP,并将在响应中呈现输出。确保为 jstl 核心添加 jar。
猜你喜欢
  • 2010-12-15
  • 2016-11-24
  • 2011-10-20
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-13
  • 2014-06-05
相关资源
最近更新 更多