Struts2 學習(一)
一、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 學習(一)