1. 程式人生 > >Struts2 學習(一)

Struts2 學習(一)

jar文件 open cep pri javaee get value throw object

一、Struts 介紹

1、Struts2的概述

1、早期開發模型Servlet+JSP+JavaBean(Model2)顯得力不從心:

  流程淩亂、數據傳遞無序、缺乏輔助功能。

2、MVC模式的輕量級Web應用框架:Apache Struts1 很快風靡全球。

  代碼結構劃分合理,實用工具框架(如驗證框架、國際化框架)等。

3、時間推移,Struts1的缺點:

  線程不安全、靈活性低、和ServletAPI耦合、頁面傳值麻煩等。

4、異軍突起,SpringMVC 和 OpenSymphony 的 WebWork 等。

5、Apache Struts + OpenSymphony WebWork2 = Struts2

  Struts2:基於MVC的輕量級的Web應用框架,

6、來源於Webwork2與Struts1.x完全不兼容,Struts2 是一個非常優秀的MVC框架,基於Model2 設計模型。

由傳統Struts1和WebWork兩個經典框架發展而來:

  Struts2框架= Struts2 + XWork

7、Strust2 核心功能:

  • 允許POJO(Plain Old Java Objects)對象 作為Action。
  • Action的 execute 方法不再與 Servlet API 耦合,更易測試
  • 支持更多視圖技術(JSP、FreeMarker、Velocity)
  • 基於 Spring AOP 思想的攔截器機制,更易擴展
  • 更強大、更易用輸入校驗功能
  • 整合Ajax支持

2、Struts2框架的核心兩層(Struts+XWork)

技術分享圖片

3、Struts 目錄結構

技術分享圖片

1、apps:該文件夾包含了基於 struts2 的示例應用,這些示例應用對於學習者是非常有用的。

2、docs:該文件夾下包含了 struts2 相關文檔,包括 struts2 快速入門、struts2 的文檔以及API文檔等。

3、lib:該文件夾下包含了 Struts2 框架和核心類庫,以及 struts2 第三方插件類庫。

4、src: 該文件夾下包含了 Struts2 框架的全部源代碼。

二、Struts 簡單入門

1、準備Struts2依賴的jar文件

註意:別拷貝Struts2中lib下所有的jar,必須的jar如下。

  Struts2根/apps下,解壓struts2-blank.war,拷貝其WEB-INF/lib中的所有的 jar 到自己的項目中。

技術分享圖片

2、在 web.xml 中配置前端控制器

  StrutsPrepareAndExecuteFilter-(參閱struts2-blank項目的web.xml文件)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5          version="3.1">
 6 
 7     <!--配置核心攔截器-->
 8     <filter>
 9         <filter-name>struts2</filter-name>
10         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
11     </filter>
12     <filter-mapping>
13         <filter-name>struts2</filter-name>
14         <!--攔截所有url-->
15         <url-pattern>/*</url-pattern>
16     </filter-mapping>
17 </web-app>

3、定義一個 action

  HelloAction,提供一個execute方法(公共無參數)。

 1 package com.struts2.action;
 2 
 3 /**
 4  * @author zt1994 2018/3/8 11:19
 5  */
 6 public class HelloAction {
 7     private String name;
 8 
 9     public String execute() throws Exception{
10         return "success";
11     }
12 
13     public String getName() {
14         return name;
15     }
16 
17     public void setName(String name) {
18         this.name = name;
19     }
20 }

4、HelloWorld.jsp 視圖文件

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>HelloWorld</title>
 5 </head>
 6 <body>
 7 <h1>恭喜成功配置好基本的struts2環境</h1>
 8 <h2>Hello World</h2>
 9 </body>
10 </html>

5、Struts2的配置文件 struts.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4         "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <!-- 指定Struts2處於開發階段,可以進行調試 -->
 7     <constant name="struts.devMode" value="true"/>
 8     <package name="default" extends="struts-default" namespace="/oa">
 9 
10         <action name="hello" class="com.struts2.action.HelloAction" method="execute">
11             <!--結果集,即action中成功返回的視圖-->
12             <result name="success">/HelloWorld.jsp</result>
13         </action>
14 
15     </package>
16 </struts>

6、部署項目,訪問Action

訪問格式:http://http://localhost:8080/oa/hello.action

技術分享圖片

7、Struts2 簡單執行流程

技術分享圖片

Struts2 學習(一)