有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将对象从servlet传递到JSP?

我可以通过IntegerStringFloat等等。。但是当我传递我定义的对象(Employee)时,JSP将它作为null接收

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="com.rahul.model.bean.*"%>
<!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>Search Result</title>
</head>
<body>
<%
    Employee record = (Employee) request.getAttribute("searchResult");
    out.println(record);
%>

<table border="1">
    <tr>
        <th>Id</th>
        <th>Name</th>
        <th>Designation</th>
        <th>Department</th>
        <th>Salary</th>
    </tr>
</table>
</body>
</html>

And My Controlleer doGet is:

protected void doGet(HttpServletRequest request, HttpServletResponse     response)throws ServletException, IOException {
    EmployeeDAO dao = new EmployeeDAOImpl();
    Employee result = dao.search(request.getParameter("id"));

//      PrintWriter pw=response.getWriter();
//      pw.println(result);

    ServletContext app = getServletContext();
    app.setAttribute("searchResult", result);
    System.out.println("Emp= "+result);
    response.sendRedirect("./searchview.jsp");
}

共 (1) 个答案

  1. # 1 楼答案

    试试这个:

    欢迎小轿车。爪哇

    import java.io.IOException;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @WebServlet("/greetings")
    public class GreetingsServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String message = "Hello, World";
            req.setAttribute("message", message);
            RequestDispatcher dispatcher = req.getServletContext().getRequestDispatcher("/WEB-INF/jsp/greetings.jsp");
            dispatcher.forward(req, resp);
        }
    
    }
    

    你好。jsp

    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        </head>
        <body>
        <h1><%= request.getAttribute("message") %></h1>
        </body>
    </html>
    

    这不适用于sendRedirect,因为您基本上是在客户机和服务器之间进行往返,跨越2个请求,而不是一个请求。第一个请求有您的参数,但是由于您的客户端没有存储它,因此在重定向发生时它将丢失。您应该转发到JSP,除非servlet所做的事情不应该反复执行(比如数据库插入)。如果您真的需要重定向,请查看here