程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JSP Web框架研究:Struts

JSP Web框架研究:Struts

編輯:關於JAVA

在JSP 的各種Web框架中,據我看來Struts框架最為簡單。下面從Struts框架開始來研究JSP的web框架。

1、MVC

在研究這個框架之前,先要對MVC模式有所了解。幸好以前學習過設計模式,對MVC編程和模式了解一些,即將模型、視圖、控制器分開。使三者可以各負其責,處理自己的邏輯。

2、Struts框架的介紹:

Struts框架也采用了MVC結構:

Model:在Struts框架中,Model模型的實現是JavaBean.在Struts框架中,通過使用JavaBean完成信息的存儲。

Control:控制器即Java Servlet,由框架提供,負責視圖和模型之間的交互。控制器的每個入口都由名為struts-config.XML的配置文件設置。該文件把來自視圖的請求映射為特定的Java類

以進行相應的處理,控制器還指定下一個視圖的位置。

VIEw:視圖,當然使用JSP了。

是不是很簡單啊。

下面的序列圖反映了一個簡單的Strut構架的運行過程:

看到上面的序列圖,如果讓我們從頭來寫代碼,來實現Struts構架,這樣也太累了。Struts構架給我們提供了不少類,如果ActionServlet、Action、ActionForm等。通過繼承使用他們和使用框架,我們只需寫幾個繼承類,就可以寫出基於這個框架的代碼了。這就是框架的好處,他把一些細節給我們屏蔽了,我們只要實現了關鍵部分。OK,就可以了。結構又好,又方便。這就是框架的好處。

通過上面的說明,或許你對框架會有些了解。框架,簡單的理解,就是我們小學時做的填空題,我們把重要的空填一下。就可以了。顯然,上面的描述不是很准確,但用來簡單的理解框架還是可以的。

下面需要用一個實例來說明如何使用struts框架了。

我們用Struts實現一個簡單的注冊信息頁面。

需要注冊的信息只由用戶名和密碼。下面是具體的實現。

首先定義一個User類:

1: public class User {

2: private String userName;

3: private String passWord;

4:

5: public String getPassWord() {

6: return passWord;

7: }

8:

9: public void setPassword(String passWord) {

10: this.password = passWord;

11: }

12:

13: public String getUserName() {

14: return userName;

15: }

16:

17: public void setUserName(String userName) {

18: this.userName = userName;

19: }

20:

21: }

User類定義了用戶的信息描述。下面的UserForm繼承了AcitonForm類,用於驗證請求信息並對表單信息進行檢查。

public class UserForm extends ActionForm {

private User user;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

public String getUserName() {

return user.getUserName();

}

public String getPassWord() {

return user.getPassWord();

}

@Override

public void reset(ActionMapping a, HttpServletRequest r) {

this.user = new User();

}

@Override

public ActionErrors validate(ActionMapping a, HttpServletRequest r) {

ActionErrors errors = new ActionErrors();

if(user.getUserName()==null||(user.getPassWord()==null)){

errors.add("請填寫用戶名和密碼!",new ActionMessage("error.user.passWord"));

}

return errors;

}

}

UserAction類:繼承了Action,用來相應請求。看看execute函數就知道請求相關的參數包括映射(ActionMapping)、請求表單(ActionForm)、servlet請求(HttpServletRequest)和響應(HttpServletResponse)。那麼就很容易的寫出處理請求的函數。

import Javax.servlet.http.HttpServletRequest;

import Javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

/**

*

* @author WangJing

*/

public class UserAction extends Action {

@Override

public ActionForward execute(ActionMapping mapping, ActionForm arg1, HttpServletRequest request, HttpServletResponse arg3) throws Exception {

UserForm userForm = new UserForm();

try{

UserBean bean = new UserBean();

bean.addUser(userForm.getUser());

}catch(Exception e){

e.printStackTrace();

}

request.setAttribute("user",userForm.getUser());

return (mapping.findForward("userCreated"));

}

}

UserBean:它實現了具體的業務邏輯,她被Action調用。完成數據的存儲。

class UserBean {

void addUser(User user) {

throw new UnsupportedOperationException("Not yet implemented");

}

private Connection conn;

public UserBean() {

this.conn = DatabaseConn.getConnection();

}

public void addUser(User user){

Statement s = (Statement) conn.createStatement();

s.executeUpdate("insert into User values("+user.getUserName()+","+user.getPassWord()+");");

}

}

上面的代碼進行了數據的存儲處理。需要注意的是代碼中的DatabaseConn.getConnection()是沒有的。需要自己實現的。具體的實現可以參考本人的博客中關於連接數據庫的一篇文章。

好了,下面就是最重要的顯示JSP文件代碼的編寫了:

"http://www.w3.org/TR/Html4/loose.dtd">

JSP Page

userName:

passWord:

下面用vIEwUser.JSP來作為響應頁面:

JSP Page

<%

User user= (User)request.getAttribute("User");

%>

已經創建了用戶:

name:

passWord:

ok,所有的文件編好之後,下面就是配置和運行了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved