2016-07-27 80 views
0

我可以通过IntegerString,Float等。但是当我通过我定义的对象(Employee)时,JSP正在接收它作为null如何将对象从servlet传递给JSP?

<%@ 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"); 
} 
+0

您确定请求属性“searchResult”确实存在吗? – reporter

+0

你在某个时候设置了这个属性吗?你是否按照正确的要求设置了它? – Thomas

+0

protected void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException异常IOException {} {}} EmployeeDAO dao = new EmployeeDAOImpl(); \t \t员工结果= dao.search(request.getParameter(“id”)); \t \t \t \t ServletContext app = getServletContext(); \t \t app.setAttribute(“searchResult”,result); \t \t System.out.println(“Emp =”+ result); \t \t response.sendRedirect(“./searchview.jsp”); \t} –

回答

1

试试这个:

GreetingsServlet.java

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); 
    } 

} 

greetings.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