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

Struts 2簡單介紹

編輯:關於JSP

一、struts2

1.概述

Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合並的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。Struts 2以WebWork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對於WebWork,Struts 2的變化很小。

2. 搭建Struts2開發環境

(1)找到開發Struts2應用需要使用到的jar文件.

\
(2)編寫Struts2的配置文件

Struts2默認的配置文件為struts.xml ,該文件需要存放在WEB-INF/classes下,該 文件的配置模版如下:

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">


注意:此文件在開發的時候是放到src目錄下,程序編譯後會自動拷貝到WEB-INF/classes目錄下。
(3)在web.xml中加入Struts2 MVC框架啟動配置

在struts2中,struts框架是通過Filter啟動的。他在web.xml中的配置如下:

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*

在StrutsPrepareAndExecuteFilter的init()方法中將會讀取類路徑下默認的配置文件struts.xml完成初始化操作。

注意:struts2讀取到struts.xml的內容後,以javabean形式存放在內存中,以後struts2對用戶的每次請求處理將使用內存中的數據,而不是每次都讀取struts.xml文件

3.動態方法調用

如果Action中存在多個方法時,可以使用!+方法名調用指定方法。

如果不想使用動態方法調用,可以通過常量struts.enable.DynamicMethodInvocation關閉動態方法調用。

4.Struts2中常用的結果類型

dispatcher:主要用於返回JSP,HTML等以頁面為基礎View視圖,這個也是Struts2默認的Result類型。在使用dispatcher時,唯一需要指定的,是JSP或者HTML頁面的位置,這個位置將被用於定位返回的頁面。

注意:用於頁面轉發,頁面跳轉過程一直是同一個線程,Action中的數據一直保存在。location只能是頁面,不能是另一個action
redirect:將用戶重定向到一個已配置好的URL。
redirectAction:將用戶重定向到一個已定義好的action。
chain 用於把相關的幾個action連接起來,共同完成一個功能。


二、案例

用戶登錄:

struts.xml的配置





	//如果某個包沒有指定namespace,則該包使用默認的命名空間,默認的命名空間總是""。struts-default定義了這些攔截器和Result類型。可以這麼說:當包繼承了struts-default才能使用struts2提供的核心功能。
		
			
				/index.jsp//如果返回success跳轉
			
			/error.jsp//如果出現錯誤跳轉到錯誤界面
		
	//訪問struts2中action的URL路徑由兩部份組成:包的命名空間+action的名稱


web.xml




    Struts Blank

  struts2
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  


  struts2
  /*

index.jsp

LoginAction.java

package bean;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction  extends  ActionSupport{
   
	//private static final long serialVersionUID = 1L;
	private String name;
    private String pass;
    public  String execute()  throws  Exception{
    	if(this.getName().equals("scott")&&this.getPass().equals("tiger")){
    		ActionContext.getContext().getSession().put("user",this.getName());
    		return this.SUCCESS;
    	}
    	this.addActionMessage("用戶名或密碼錯誤");
    	return this.ERROR;
    }
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}     
}







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