java - jsp 页面( View )和 servlet( Controller )之间的事务排序

标签 java jsp session servlets

我正在使用 servlet 一段时间,并试图弄清楚 View 如何与 servlet 通信,更准确地说,我正在谈论以下实例: HttpSession、HttpServletRequest 和 HttpServletResponse 类。

1)在我的jsp文件中我有这行代码:

<% CategorieForm cf=(CategorieForm)session.getAttribute("catForm");%>

这是“ session ”在此文件中第一次出现。

当创建此 session 对象时。

2)也在我的 servlet 中我有这个方法:

doPost(HttpServletRequest request, HttpServletResponse response)
{
/*
code that get the resuest parameters using the 'request.getParameter()' method, calls   the model ans store the results in formBean
*/
HttpSession session=request.getSession();
session.setAttribute("catForm",cf);
response.sendRedirect("Categories.jsp");
}

我只是想了解这是如何工作的, View 和servlet之间的事务顺序,当创建对象“请求”和“响应”时,servlet中的HttpSession对象是否与servlet中的 session 相同jsp 文件。

谢谢。

最佳答案

让我们从浏览器开始。它生成并发送 POST 请求。

Servlet 容器 (YMMV) 以字节形式接收该 POST 请求。 Servlet容器解析它,生成HttpServletRequestHttpServletResponse对象,找到合适的 Servlet处理请求,并拉出 Thread从其 HTTP 工作线程池中运行它。

它调度 Thread它调用 service(..)在您的Servlet上。您的定制Servlet延伸HttpServlet因此继承了它的 service()方法,根据请求,调用 doXXX() 之一方法。

在本例中,doPost()将被调用。当你到达

HttpSession session=request.getSession();

如果 HttpSession不存在,Servlet容器将为您创建一个 JSESSIONID Cookie 并将其添加到 HttpServletResponse

当你这样做时

response.sendRedirect("Categories.jsp");

Servlet 容器将提交状态代码为 302 和 Location 的响应。包含 Categories.jsp 的 URI 的 header 根据您的主机和上下文路径解决。

如果您的客户端是浏览器,它很可能会向该 URI 发送新的 GET 请求。您的 Servlet 容器将执行我上面描述的相同操作并调用 service()在从 jsp 生成的编译类上文件。这将生成 HTTP 响应的正文,并将其发送回客户端。

关于java - jsp 页面( View )和 servlet( Controller )之间的事务排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644359/

相关文章:

java - 有没有办法不打印 log4j 警告消息?

java - 显示来自 ArrayList 的数据(EJB + Servlet + JSP(JSTL))

java - 从 JSP 页面中的 servlet 调用方法,使用该 JSP 页面中的参数的方法

java.lang.NumberFormatException : For input string: "id"

go - Gin Sessions 将状态和代码存储在 URL 中,我想更改它以使我的 URL 更清晰

java - 在 2 个子域之间共享 session 数据

java - 找到两个数组之间的非公共(public)元素

java - OnClickListener 不显示我的函数的输出

java - 有没有办法覆盖 JUnit 以将响应发送回另一个方法?

php - 什么是最好的 : Check the database or just check the session on each page using PHP