開發工具:eclipsehtml
搭建環境:jdk1.7 tomcat 8.0java
基礎的java開發環境搭建過程再也不贅述,下面從打開eclipse 以後的操做開始程序員
第一步: 建立項目,File -> New -> dynamic web projectweb
tomcat 版本通常會自動獲取,只要填上項目名稱,點擊下一步apache
到這個頁面以後,把Content directory 改爲WebRoot,自動生成xml的選項點選爲√ ,點擊完成。瀏覽器
項目目錄以下圖所示:tomcat
其中,lib文件夾放的是項目所需的jar包,將jar包複製進去後,點擊右鍵 Bulid Path -> Add To Bulid Path,導入成功。服務器
我導入的是structs2.3.37版本,需關聯導入共9個jar包,以下:session
在WebRoot下新建jsp頁面 index.jsp,而後將項目add到tomcat服務器上,點擊運行。如今在瀏覽器中已經能夠訪問啦app
第二步,修改配置文件
1. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>HelloWorld</display-name>
<!--系統首頁配置 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 配置文件 多個文件用,分開 -->
<init-param>
<param-name>config</param-name>
<param-value>struts.xml</param-value>
</init-param>
<!-- 攔截器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<!-- 配置Struts2框架默認載入的Action包結構 -->
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.koala.actions</param-value>
</init-param>
</filter>
<!-- 配置Filter攔截的URL -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
過濾器:Filter過濾器是java經常使用技術,也是Struts2能跑起來的基本前提。其工做原理爲:當項目啓動時,首先會加載web.xml中的配置,因此會首先加載配置的StrutsPrepareAndExecuteFilter過濾器。過濾器是做爲用戶請求和Web服務器之間的處理程序,能夠對用戶請求和處理程序相應的內容進行處理。經過過濾器原理,能夠達到讓開發人員先一步對用戶請求進行處理,在Servlet被調用前,檢查Request對象,修改Request Header和Request內容。
過濾器過濾的URL資源能夠是Servlet、JSP、HTML文件,或是整個路徑下的任何資源。多個過濾器能夠構成一個過濾器鏈,當請求過濾器關聯的URL時,過濾器鏈上的過濾器會挨個發生做用。過濾器每每用在進行權限控制、字符集處理等場合。
* 注:攔截器名稱org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,2.1.3之前版本時爲org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,請注意區分。
監聽器:監聽某個對象的的狀態變化的組件。監聽器的相關概念事件源:
按照被監聽的對象劃分:ServletRequest域 ;HttpSession域 ;ServletContext域。按照監聽的內容分:監聽域對象的建立與銷燬的; 監聽域對象的屬性變化的。
2. struts.xml
struts.xml 新建在src目錄下,如下爲該文件的基本配置
<?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> </struts>
在配置過struts的package屬性後,文件配置被我修改成
<?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> <!-- 設置編碼格式爲utf-8 --> <constant name="struts.i18n.encoding" value="utf-8"/> <!-- 修改struts.xml後,無需重啓Tomcat --> <constant name="struts.configuration.xml.reload" value="true"/> <!-- package屬性介紹 1.name ->包的名稱,可自定義,能夠配置多個包 2.namespace ->命名空間,不一樣模塊能夠指定不一樣的空間,必須以"/"開頭,爲防止action的name重複 3.extends -> 繼承,值是直接或間接的繼承struts-default,它也是一個xml文件 --> <package name="login" namespace="/user" extends="struts-default"> <!-- action 屬性介紹 1.name ->url請求名,不須要加後綴(.action) 2.class ->處理url對應的java類,class要求報名加類名 3.method ->配置處理請求的方法,默認爲execute;方法必須是public String修飾的 --> <action name="login" class="com.koala.action.LoginAction" method="login"> <!-- result屬性介紹 1.name:->匹配請求方法的返回值,默認是success 2.type:->結果處理類型,默認是dispatcher轉發 chain: 連接到下一個action,執行完actionA後執行actionB<result type="chain">exit</result> redirect: 重定向到jsp頁面 redirectAction: 重定向到下一個action --> <result name="success">/success.jsp</result> <result name="error">/login.jsp</result> <result name="redire" type="chain">userCount</result> </action> <action name="userCount" class="com.koala.action.LoginAction" method="userCount"> <result name="success">/WEB-INF/success.jsp</result> </action> </package> <!-- 默認包 沒有命名空間時,會進入該包查找action --> <package name="default" namespace="/" extends="struts-default"> <action name="index"> <result>/index.jsp</result> </action> </package> </struts>
此時項目下的文件目錄以下:
LoginAction.java的內容以下:
package com.koala.action; public class LoginAction { public String login(){ System.out.println("login"); return "redire"; } public String userCount(){ System.out.println("userCount"); return "success"; } }
此時項目能夠成功運行,瀏覽器輸入http://localhost:8080/HelloWorld/user/login, 或者http://localhost:8080/HelloWorld/index,均可以進行訪問啦
此時此刻的心情
啊哈哈 巴適得很