Java Web項目搭建過程記錄(struts2)

開發工具: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,請注意區分。

 

  監聽器:監聽某個對象的的狀態變化的組件。監聽器的相關概念事件源:

  • 被監聽的對象(三個域對象 request,session,servletContext)
  • 監聽器:監聽事件源對象, 事件源對象的狀態的變化都會觸發監聽器 。
  • 註冊監聽器:將監聽器與事件源進行綁定。
  • 響應行爲:監聽器監聽到事件源的狀態變化時,所涉及的功能代碼(程序員編寫代碼)

  按照被監聽的對象劃分: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,均可以進行訪問啦

 

此時此刻的心情

 

啊哈哈   巴適得很

相關文章
相關標籤/搜索