gpt4 book ai didi

jsp - 如何在 JSP 中使用 for request scope? 定义 bean 后在 servlet 中获取 bean

转载 作者:行者123 更新时间:2023-12-01 22:55:50 26 4
gpt4 key购买 nike

friend 们,我是JSP技术的新手;我在使用 <jsp:UseBean> 设置 beans 属性时遇到问题请求范围的标签。我想做的是使用 <jsp:UseBean> 在 JSP 页面中设置 beans 属性与范围请求和 <form>提交按钮 我正在点击 servlet 类来检查 bean 是否已添加到请求范围。我无法将我的 bean 添加到请求范围。但是,当将范围更改为 session 时,就没有问题了。为什么会这样。谁能指导我吗?

bean 类

package mypack;

public class Car {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

}

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="car" class="mypack.Car" scope="request">
<jsp:setProperty name="car" property="id" value="111"></jsp:setProperty>
<jsp:setProperty name="car" property="name" value="Jeep"></jsp:setProperty>
</jsp:useBean>
<form method="post" action="CarServlet">
<input type="submit" value="submit">
</form>
</body>
</html>

CarServlet

package mypack;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/CarServlet")

public class CarServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public CarServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/html");
//HttpSession session=request.getSession();
Car c=(Car)request.getAttribute("car"); // if I change request to session problem solves...
out.println("........"+c.getName());
}
}

网页上的输出

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
mypack.CarServlet.doPost(CarServlet.java:19)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.34 logs.

Apache Tomcat/7.0.34

最佳答案

Name was not previously introduced" indicates that you haven't toldyour JSP about this bean as of yet.

您需要添加

<jsp:useBean id="taskBean" class="com.mybean.TaskBean" scope="request" />

在使用 jsp:getProperty 访问属性之前

另外,

jsp:getProperty 的“name”属性应该与声明的 bean 的“id”属性匹配。

然后访问

<jsp:getProperty name="taskBean" property="multiplier" />

与 Scriptlet 一起使用时

TaskBean taskBean = (TaskBean) request.getAttribute("taskBean");

检查您是否已经添加 <%@page import="com.mybean.TaskBean"%> JSP 中的语句。

所以,当 JSP 页面像 RequestScope_jsp.java 一样被编译时。

首先,它有您的 bean 的 import 语句 其次,_jspService 方法有请求和响应参数作为参数。

_jspService(HttpServletRequest request, HttpServletResponse response)

因此,您可以使用 scriptlet 访问转发的 JSP 页面。 EL 也会发生同样的情况。

Remember thumb rule

:当使用jsp:getProperty访问bean属性时,需要添加jsp:useBean,用于定位和实例化bean类

关于jsp - 如何在 JSP 中使用 <jsp :usebean> for request scope? 定义 bean 后在 servlet 中获取 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24075826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com