程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Struts2入門(一)——配置文件,struts2入門

Struts2入門(一)——配置文件,struts2入門

編輯:JAVA綜合教程

Struts2入門(一)——配置文件,struts2入門


一、前言

1、了解三大框架

什麼是框架?

框架是一種規范,一種規則,一種把技術組織起來的規則,這就是框架。

 

什麼是三大框架(SSH),Struts、hibernate和spring的作用是什麼?

Struts主要負責層的顯示,spring利用IOC和AOP來處理控制業務(負責對數據庫的操作),hibernate主要作用是數據的持久性到數據庫。

Struts的處理流程:

在Struts 2下載文件Struts-core-2.5.2.文件中(注意:不同jarStruts核心控制器的名稱不同),StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,

它負責攔截由<url-pattern>/*</url-pattern>指定的所有用戶請求,當用戶請求到達時,該Filter會過濾用戶的請求。

默認情況下,如果用戶請求的路徑不帶後綴或者後以.action結尾,這時請求將被轉入Struts2框架處理,否則Struts 2框架將略過該請求的處理。

當請求轉入Struts 2框架處理時會先經過一系列的攔截器,然後再到Action。與Struts1不同,Struts 2對用戶的每一次請求都會創建一個Action,所以Struts2中的Action是線程安全的。

2、搭建Struts 2環境

(1)下載關於Struts 2所需要的jar文件,這裡使用的是struts-2.5.2-all.zip,下載地址(這裡)

(2)編寫Struts 2配置文件,分為struts.xml

(3)在Web.xml加入Struts 2的框架啟動配置

 

搭建Struts 2開發環境——所需的jar包

下載完畢之後解壓文件,將所需要的文件拷貝到項目的lib文件下,這裡配置的是Struts 2.5所需要的配置文件

必備jar包:尤其是log4j.jar和javassist.jar為必備包

注意:如果clesses沒有的話,自行創建,然後創建struts.xml

配置模板代碼如下:

<?xml version="1.0" encoding="UTF-8"?>  
<!--注意:有時候創建不會自動生成以下的<!DOCTYPE>,所以需要自動引入,
如果使用的是2.3或者是1點幾的話,只需要將Confinuration2.5//EN和下面的struts-2.5.dtd中的2.5改變為2.3或者1.幾即可--> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> </struts>

 

搭建Struts 2開發環境——Struts 2在Web中的啟動配置

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

  <!--為Struts2定義一個過濾器  -->
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
          org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

注意:<!-- 自從Struts 2.1.3以後,下面的FilterDispatcher已經標注為過時  

     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> --> 

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

在讀取完struts.xml的內容後,會以javabean形式存放到內容中,以後struts 2對用戶的每次請求都會使用內存中的數據,而不是去讀取文件。

 

入門例子:(該例子是官方文檔例子)

在新建的struts.xml配置文件中加入配置:

 

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="tutorial" extends="struts-default">
<!--name:可自己定義名稱,class:實現類的准確路徑-->
        <action name="helloword" class="com.hello.HelloWord" method="execute">
            <result name="success">HelloWorld.jsp</result>
        </action>
    </package>
</struts>

在Struts2框架中使用包來管理action,主要用於管理一組業務相關的action,實際開發中,應該把一組業務相關的Action放在同一個包下。

注意:struts.xm和Actoin配合使用,難免會使文件變得臃腫,我們可以通過<include file="文件名.xml"/>將struts.xml分割成多個。

 

解析struts.xml中的標簽:

Action中的name屬性:

配置包時必須指定name屬性,可以任意命名但是必須唯一,不能對應java類名,如果要讓其他包繼承該包,可使用該屬性進行引用。

method屬性:

指定服務器調用哪個方法,默認為execute。

namespace屬性:

表示命名空間,作為訪問路徑的一部分,如果路徑是helloword.action的話,則加上/命名空間/helloword.action,如果不指定,默認為""(空字符串)

通常每個包都應該繼承struts-default包, 因為Struts2很多核心的功能都是攔截器來實現。

使用Action元素必須指定系列的result元素,每個result元素定義邏輯視圖和物理視圖之間的映射。

result元素中type屬性默認jsp為視圖,可設置type的值改變數據所要顯示的視圖。

 

例子中使用的HellWord.java實現類代碼:

package com.hello;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWord extends ActionSupport {
    
    public static final String MESSAGE = "Struts is up and running ...";
    private String message;
    public void setMessage(String message){
        this.message = message;
    }
 
    public String getMessage() {
        return message;
    }
    public String execute() throws Exception {
        setMessage(MESSAGE);
        return SUCCESS;
    }
}

 

struts.xml配置文件中的HelloWord.jsp代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h2><s:property value="message" /></h2>
    </body>
</html>

 

訪問struts2中action的URL路徑由兩部份組成:包的命名空間+action的名稱,例如訪問本例子HelloWord的URL路徑為:/helloworld (注意:完整路徑為

http://localhost:端口/項目名稱/helloworld)。另外我們也可以加上.action後綴訪問此Action。

 

入門例子運行效果如下:

 

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