2012-08-17 18 views
1

如何鏈接JSP,servlet和Java視圖bean? 我不想在JSP中有任何scriplet。我怎樣才能讓我的JSP調用servlet來設置隱式請求和響應對象,然後在jsp上顯示來自視圖bean的屬性。如何鏈接JSP,servlet和Java視圖bean?

我需要將請求和響應對象從jsp傳遞給servlet,然後我想將視圖bean中定義的屬性顯示給JSP頁面。

JSP - > Servlet - >查看Bean - > JSP

如何做到這一點?

+0

這是'怎麼... JSP,servlet和一個Java視圖bean?'系列的第三個問題。請*重述*您的問題。 – adatapost 2012-08-17 06:09:51

+0

還有一些類似的[示例](http://stackoverflow.com/questions/11984371) – 2012-08-17 06:23:44

回答

4

無需通過要求響應豆/模型因爲你的模型類實例化無論是在JSPsServlets

你必須選擇servlet-centric的方法。

ViewBean.java


package in.abc.model; 

public class Employee{ 
    private Integer id; 
    private String name; 
    public Employee() { id=0; name="";} 
    public Employee(Integer id, String name) { this.id=id; this.name=name;} 
    public Integer getId() { return id;} 
    public String getName() { return name;} 
    public void setId(Integer id) { this.id=id;} 
    public void setName(String name) { this.name=name;} 
} 

ViewServlet.java


package in.abc.servlets; 

@WebServlet(name = "ViewServlet", urlPatterns = {"/view"}) 
public class ViewServlet extends HttpServlet{ 
    public doGet(HttpServletRequest request, 
       HttpServletResponse response) 
       throws ServletException, IOException { 

     //Instantiate the model 
     Employee emp=new Employee(10,"Mr.A"); 

     //Insert "model" object to request 
     request.setAttribute("emp",emp); 

     //forward the request to view.jsp 
     request.getRequestDispatcher("/view.jsp"). 
        forward(request,response); 
    } 

public doPost(HttpServletRequest request, 
       HttpServletResponse response) 
       throws ServletException, IOException { 

     //Instantiate the model 
     Employee emp=new Employee(); 

     //Read the request 
     try{ 
      emp.setId(Integer.parseInt(request.getParameter("id")); 
     }catch(Exception ex) {} 
     emp.setName(request.getParameter("name")); 

     //Insert "model" object to request 
     request.setAttribute("emp",emp); 

     //forward the request to view.jsp 
     request.getRequestDispatcher("/view.jsp"). 
        forward(request,response); 
    } 
} 

view.jsp的


<h3>Employee info</h3> 
<p>ID : ${emp.id}</p> 
<p>Name : ${emp.name}</p> 

<form method="post" action="view"> 
    <br/> <input type="text" name="id"/> 
    <br/> <input type="text" name="name"/> 
    <br/> <input type="submit"/> 
</form> 

的index.jsp


<h1> 
    <a href="view">View Employee details</a> 
</h1> 
+0

感謝您的回覆。 但在servlet代碼中,request.getRequestDispatcher(「/ view.jsp」)。 轉發(請求,響應);代碼是給我的不能轉發。響應已經提交。錯誤。 我使用 user1602657 2012-08-20 05:33:51

+0

@ user1602657 - 您必須*編輯*您的問題,幷包含.jsps和servlet代碼。 – adatapost 2012-08-20 06:26:01