Struts 2入門【struts.xml的DTD驗證不起作用的解決辦法】
阿新 • • 發佈:2018-12-14
Struts 2入門
1:環境搭建
①:導jar包
一些jar包:連結:https://pan.baidu.com/s/1OPlz_ekP-LIGmhNSAiMM_w 提取碼:isuh
②:配置web.xml
<filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class><!-- Strutsjar包裡面的一個類,相當於中央控制器--> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern><!-- 過濾所有請求,實際開發中一般過濾.action請求 --> </filter-mapping>
③: struts.xml(核心配置檔案)
在根目錄下新建資原始檔包,放置三個xml檔案
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <include file="struts-default.xml"></include> <include file="struts-base.xml"></include> <include file="struts-sy.xml"></include> </struts>
struts-base.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.devMode" value="true" /> <constant name="struts.configuration.xml.reload" value="true" /> <constant name="struts.i18n.reload" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 抽象包 一般定義是為了被繼承 --> <package name="base" extends="struts-default" abstract="true"> <global-allowed-methods>regex:.*</global-allowed-methods> </package> </struts>
struts-sy.xml(配置相對應的action,相當於MVC框架下得mvc.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- namespace:在記憶體中劃分具體的控制元件
name:給package取個名字 -->
<package name="sy" extends="base" namespace="/sy">
<action name="helloAction" class="com.zking.struts_base1.web.HelloAction">
<result name="success">/success.jsp</result>
</action>
<action name="calAction_*" class="com.zking.struts_base1.web.CalAction" method="{1}">
<result name="rs">/rs.jsp</result>
</action>
</package>
</struts>
struts.xml的DTD驗證不起作用的解決辦法(其他dtd約束不起作用,也適用)
1.在專案中新建一個資料夾DTD,然後將struts2.dtd檔案複製到此資料夾中
2.然後選擇選單“window--->preferences--->MyEclipse--->Files and Editors--->XML--->XML Catalog
3.點選“ADD”,然後修改彈出視窗中的內容
location:點選選擇dtd的檔案路徑(Workspace)
key Type選擇下拉框中的URI即可、key的值是從struts.xml檔案複製過來的
後臺子控制器獲取jsp所傳遞的引數的幾種形式 1.implements ModelDriven<Cal> 2.通過get/set方法獲取jsp頁面的值 3.通過物件導航的方式獲取jsp頁面的值 後臺子控制器向jsp傳值的幾種形式 1.通過傳統的作用域傳值(與J2EE容器互動) 就是獲取到四大作用域即可
public class ParamAction implements ServletRequestAware, ServletResponseAware{
private HttpServletResponse resp;
private HttpServletRequest req;
private HttpSession session;
private ServletContext application;
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.resp=arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.req=arg0;
this.session = arg0.getSession();
this.application = arg0.getServletContext();
}
2.通過值棧進行傳值 只需要在子控制器提供set/get方法,即可實現傳值的功能(calAction)