標籤:struts2 maven
1· 既然我們開發的是web項目所以web.xml檔案時必不可少的
在web.xml 中配置攔截使用者請求的 filter攔截使用者的所有的請求並且初始化 struts.xml檔案
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2·使用註解的方式配置struts就需要引入一個jar包
雖然說是零配置但是struts.xml還是少不了的配置如下:
<!-- 指定由spring負責action對象的建立 -->
<constant name="struts.objectFactory" value="spring" />
<!-- 所有匹配*.action的請求都由struts2處理,可以擴充 -->
<constant name="struts.action.extension" value="action" />
<!-- 是否啟用開發模式,上線時一般不需要開啟,開發時擷取更多的日誌資訊 -->
<constant name="struts.devMode" value="true" />
<!-- struts設定檔改動後,是否重新載入 -->
<constant name="struts.configuration.xml.reload" value="true" />
<!-- 設定瀏覽器是否緩衝靜態內容 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 請求參數的編碼方式 -->
<constant name="struts.i18n.encoding" value="utf-8" />
<!-- 每次HTTP請求系統都重新載入資源檔,有助於開發 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 檔案上傳最大值 -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 讓struts2支援動態方法引動過程,在調用時使用userAction !login .action方式進行調用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Action名稱中是否還是用斜線 -->
<constant name="struts.enable.SlashesInActionNames" value="false" />
<!-- 允許標籤中使用運算式文法 -->
<constant name="struts.tag.altSyntax" value="true" />
<!-- 對於WebLogic,Orion,OC4J此屬性應該設定成true -->
<constant name="struts.dispatcher.parametersWorkaround" value="false" />
3·action類的註解:
@ParentPackage("basePackage") //指定父包
@Namespace("/user") //指定命名空間
// @Results( { @Result(name = "success", location = "/main.jsp"), @Result(name = "error", location = "/error.jsp") }) 全域的實現跳轉的頁面
@Action("userAction") //指定action的訪問url ①
public class UserAction extends BaseAction implements
ModelDriven<User> {
②
private User user = new User();
@Override
public User getModel() {
return user;
}
private UserServiceI service;
public UserServiceI getService() {
return service;
}
@Autowired // spring註解
public void setService(UserServiceI service) {
this.service = service;
}
// @Action(value = "reg", results = { @Result(name = "success", location = "/index.jsp") }) 另一種方式localhost:8080/struts_demo/user/userAction/reg
public void reg(){
JSON j = new JSON();
try {
service.addUser(user);
j.setSuccess(true);
j.setMessage("註冊成功");
} catch (Exception e) {
j.setMessage("註冊失敗");
e.printStackTrace();
}
super.writeJson(j);
}
}
上面的1.2使用的是實現ModalDriven<User>(模型驅動的方式)方便接收頁面傳遞過來的值
以前我們是把頁面上所有的傳值寫一個類級變數然後定義其getter / setter方法
這樣的話如果變數過多會很麻煩,所以我們實現模型驅動實現其getModal方法即可,在modal層建立執行個體寫入getter/setter方法
總結:
Namespace:指定命名空間。
ParentPackage:指定父包。
Result:提供了Action結果的映射。(一個結果的映射)
Results:“Result”註解列表
ResultPath:指定結果頁面的基路徑。
Action:指定Action的訪問URL。
Actions:“Action”註解列表。
ExceptionMapping:指定異常映射。(映射一個聲明異常)
ExceptionMappings:一級聲明異常的數組。
InterceptorRef:攔截器引用。
InterceptorRefs:攔截器引用組。
4. 調用:localhost:8080/struts_demo/user/userAction!reg .action 即可