Struts2

Struts2 MVC框架,
Struts2-Core Struts2核心包
Xwork-core Xwork 核心,構建基礎
JavaSist-GA 底層字節碼生成
File-upload 文件上傳
--------------------
commons-io IO操做
commons-lang 數據類型的處理工具類
freemarker 模板引擎
ognl 表達式html

1.依賴引入
<!--獲取ServletAPI-->
<dependency>
<groupId>javaee</groupId>
<artifactId>javaee-api</artifactId>
<version>5</version>
</dependency>java

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.4.1</version>
</dependency>web

<dependency>
<groupId>org.apache.struts.xwork</groupId>
<artifactId>xwork-core</artifactId>
<version>2.3.4.1</version>
</dependency>apache

2.配置web.xml
SpringMVC 普通的Servlet
配置的是什麼?
解析:過濾器 核心過濾器 StrutsPrepareAndExcuteFilter /*攔截的是全部Action 其實就是一個特定功能的類api

3.view視圖
<%@ page pageEncoding="UTF-8" language="java" %>
<html>
<body>
<h2>Hello,Strut2 ,Must See Me~~~~~~~~~~~呵</h2>
</body>
</html>session

4.定製Action
public class UserAction implements Action{
//SUCCESS NONE INPUT LOGIN ERROR
//SpringMvc Controller
public String execute() throws Exception {
return SUCCESS;
}
}
5.struts.xml 在resources文件夾下定義一個名稱爲struts.xml的文件
根節點Struts節點
<package name="default" namespace="/" extends="struts-default">
<action name="userAction" class="cn.happy.action.UserAction">
<result name="success">/success.jsp</result>到底投影到哪一個視圖作顯示
</action>
</package>數據結構

6.部署運行
2.入門案例
3.自動裝配
Struts2 自動裝配 AutoAWired(PageUI 中的表單元素的name屬性值 ----->Action的屬性)
攔截器
零散參數的自動裝配app


JavaBean類型的自動裝配 PageUI 緊耦合 xxx yyy Action屬性名 info

ModelDriven框架

4.Struts2訪問Servlet API
01.什麼是Servlet API?
解析:實現接口重寫方法 繼承類,重寫方法。
02.session的類型 類型名 HttpSessionjsp

小Tip:以前咱們學習的session.其實底層的數據結構就是一個Map集合


ServletAPI 去獲取常見對象Session ,request
與Servlet API解耦的訪問方式
方案一: 對Servlet API進行封裝 ,藉助ActionContext
--->01.使用ActionContext類獲取ServletAPI對象對應的Map對象
獲取session對象
Map<String,Object> map=ActionContext.getContext().getSession();

獲取application對象
Map<String,Object> map=ActionContext.getContext().getApplication();

獲取request對象
ActionContext context=ActionContext.getContext();


方案二:向Action中注入ServletAPI對象對應的Map對象
--->02.Struts2向Action注入ServletAPI對象對應的Map對象

LoginBeanAction implements Action,SessionAwire{
private Map<String,Object> map;
public void setSession(Map<String,Object> map){
this.map=map;
}
}

與Servlet API耦合的訪問方式
方式一:經過ActionContext的子類ServletActionContext實現


方式二:向Action實例注入Servlet API對象


相似於 ServletRequest 和HttpServletRequest 僅對http有效
SerlvetResponse和HttpServletResponse 僅對http有效

 

使用Struts2操做ServletAPI
解耦:
方式一:Map<String,Object> map=ActionContext.getContext().getSession();

 

 

Struts2 核心控制器: StrutsPrepareAndExecuteFilter 過濾器
SpringMVC 核心控制器:Servlet DispatcherServlet

2.Namespace空間的使用
做用:隔離同名的Action
分模塊開發,每一個模塊必須有不一樣的name,namespace按模塊名稱命名。
因此說就衍生除了 namespace="/"
namespace"/oa"
namespace="/market"
namespace="job"
<include file="struts-day03.xml"></include>


方式二:注入SessionAware
getSession(Map<String,Object> map){
}

耦合:
方式一:HttpSession session=ServletActionContext.getRequest().getSession();

方式二:實現接口ServletRequestAware

public void setServletRequest(HttpServletRequest httpServletRequest) {
this.httpServletRequest=httpServletRequest;
}

2.Struts2 自動裝配
零散參數 Page UI 表單元素的名字--------->Action的成員變量的名稱一致

對象類型 Page UI info.userName ---------->info

ModelDriven<UserInfo> 手動的new成員變量 Page UI userName ------------>info

3.Struts2標籤
<s:form action="" method="">

<s:textfield>

<s:password> <s:submit>

相關文章
相關標籤/搜索