java - 访问 servlet 内的请求作用域 bean

标签 java jsp servlets

我有一个 jsp 页面,我在其中使用一个 bean 作为请求范围 bean。我有一个输入文本,其值是 bean 的属性。在表单提交上,我的操作是 someServlet。现在,在 someServlet 中,我想访问我在 jsp 页面中使用的 bean。 这是我正在使用的示例代码。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="userBean" scope="request" class="com.iceman.bean.UserBean">
<jsp:setProperty property="*" name="userBean"/></jsp:useBean>
    <form action="action.do" method="post">
        Type Your Name:<input type="text" name="userName"/><br/>
        <input type="submit" value="Submit"/> 
    </form>
</body>
</html>

服务器

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        UserBean userBean = (UserBean)request.getAttribute("userBean");
        response.getWriter().print(userBean.getUserName());
    }

当我运行这个程序时,我在调用 bean getter 方法的 servlet 行上遇到空指针异常。

我哪里做错了?

最佳答案

这只是因为render请求和post请求是不同的请求:

  • 客户端发送第一个请求,服务器端使用 jsp 来构建响应。在 JSP 中创建的请求作用域 bean 仅存在于该 bean 中
  • 用户填写表单并发布新请求

在请求之间保留信息的唯一方法是:

  • session (以及某些框架(如 ruby​​ on Rails 或 Spring MVC)提供的 flash)
  • 表单字段(包括隐藏字段)
  • 网址参数

关于java - 访问 servlet 内的请求作用域 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34468902/

相关文章:

javascript - 如何使用 html 或 jsp 将数据以 xml 形式发布到服务器

java - spring:mvcUrl 映射错误的 id

java - 如何在 servlet 类中使用 for 循环?

java - 你如何发送带有中文字符的Javamail?

java - 从后台线程更均匀地分散负载

java - 在 dataTable 中使用 commandLink、ViewScope 时,JSF 输出未按预期输出

java - 如何配置rabbbitmq中队列的消费者来监听多种数据类型的消息?

java - InputStream 和 ByteArrayInputStream 有什么区别?

javascript - 来自 servlet 的警报返回空白页

java - 通过端口限制对 Servlet 的访问