初識Struts2(如何建構一個簡單的項目)

開發流程:

 1、準備Jar包(到Blank項目中拷)
 2、將struts2的核心類配置到web.xml -------配過濾器(filter): org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
 3、寫一個控制器(Action)--EJB=JavaBean+業務方法(默認String execute() )
 4、寫返回頁面(JSP頁面)
 5、寫struts2的配置文件:struts.xml---把我們寫的Action和返回頁面配置到該文件中
 6、測試

最小包:

Struts2能幫我們做:

1、幫助我們把前端頁面上傳的參數獲取,並封裝成EJB(Action對象)
2、幫助我們自動把信息存放到request中
3、幫我們實現頁面轉發(根據struts.xml中的結果頁面配置 <action>中的<result>標籤配置)
4、以上3個是核心功能。另外,還有國際化、表單可配置、文件上傳下載、頁面標籤庫,驗證框架,對Ajax的支持,數據庫連接和事務,攔截器!

 

canStrutsHello

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  
  <filter>
  	<filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>	
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
  <!-- 表單請求地址爲struts.xml配置文件中action的name值 -->
    <form action="aa/login.action" method="post">
    	姓名:<input type="text" name="userName" /><br/>
    	密碼:<input type="text" name="password" /><br/>
    	<input type="submit" value="登錄" />
    </form>
  </body>
</html>


struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<!-- package屬性name值可隨意取,可被繼承,namespace屬性值"/"+字符,可防止action的name值相同時出錯,進行分辨。 extends屬性 值struts-default繼承struts的一個默認包-->
	<package name="login" namespace="/aa" extends="struts-default">
		<action name="login" class="cn.hncu.user.login.LoginAction">
			<result name="index">/index.jsp</result>
			<result name="success">/jsps/success.jsp</result>
		</action>
	</package>
</struts>


LoginAction.java

package cn.hncu.user.login;

import com.opensymphony.xwork2.ActionSupport;

/*
 * 注意:
 * 1.寫Action時一定要要寫  set  get  方法,在業務方法中可以直接屬性名或  get方法直接獲取屬性值
 * 2.寫Action時,屬性名要和前臺發送數據的屬性名一致,這樣struts會幫我自動獲取並且封裝到Action中
 * 3.寫Action時,業務方法的返回值是一個字符串,該值決定導向不同結果對象頁面(字符串值與頁面的對應關係,由struts.xml的<action>來定義)
 * 4.寫Action時,如果想使用request,response,session,application等,繼承com.opensymphony.xwork2.ActionSupport類
 */
public class LoginAction extends ActionSupport{

	private String userName;
	private String password;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override//業務邏輯方法------調用service層
	public String execute() throws Exception {
		/*
		//這一段展示使用web容器------普通EJB也可以這樣使用
		ActionContext context=ActionContext.getContext();
		context.getApplication().put("user", "Tom");//類似  application.setAttribute("user","Tom");
		String user=(String) context.getApplication().get("user");//application.getAttribute("user");
		System.out.println("user :"+user);
		*/
		
//		String name=getUserName();
//		String pwd=getPassword();
		String name=userName;
		String pwd=password;
		//按理這裏應該訪問service層以進行登錄判斷,此處模擬了
		System.out.println("這裏模擬登錄service了.......");
		boolean boo=name.endsWith("hncu")&&pwd.equals("1234");
		if(boo){
			return "success";
		}else{
			return "index";
		}
	}
	@Override
	public void validate() {
		System.out.println("校驗:"+userName+","+password);
	}
	
}


success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
  	<h2>恭喜你,登錄成功了!</h2>
  </body>
</html>


 

主頁:

 

登陸結果:

發佈了121 篇原創文章 · 獲贊 49 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章