首页 > 代码库 > Struts2.X深入浅出 学习笔记
Struts2.X深入浅出 学习笔记
第一节、MVC以及Struts2简介
第二节、Action生命周期以及接收表单数据
第三节、Struts2配置以及Struts.xml详解
-
Struts2 主要配置文件
?
1 2 3 4 5 | Web.xml 设置过滤器以及annotation初始化参数 Struts.xml 主配置文件 Struts.properties 默认属性文件 Struts- default .xml 默认配置文件 Struts-plugin.xml 插件配置文件 |
-
Struts2 主要配置加载次序
?
1 2 3 4 5 6 7 8 | 由上至下,以此为: Struts- default .xml Struts-plugin.xml Struts.xml Struts.properties Web.xml 如果在多个文件中配置了同一个Struts2常量,则后一个文件中的配置的常量值将覆盖前面文件中配置的常量值。在不同文件中配置常量的方式是不一样的,但不管哪个文件中,配置Struts2常量都要指定两个属性:常量name和常量value 推荐在struts.xml文件中配置Struts2常量 |
-
Struts-default.xml 配置信息
?
1 2 3 4 5 6 7 | Bean元素属性 class :必选,指定了Bean实例的实现类 type:可选,通常是通过某个接口或者在此前定一个过的Bean name:可选,它指定的Bean实例的名字,对于有相同type的多个Bean,name必须唯一 scope:可选,指定Bean的作用域,只能是 default 、singleton、request、session和thread之一 static :可选,它指定Bean是否使用静态方法注入。通常而言,当指定了type属性时,该属性就不应该设置为 true optional:可选,指定Bean是否是一个可选Bean |
-
default.properties 默认属性信息
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | ##字符集 struts.i18n.encoding=UTF-8 struts.objectFactory.spring.autoWire = name struts.objectFactory.spring.useClassCache = true struts.objectFactory.spring.autoWire.alwaysRespect = false struts.multipart.parser=jakartastruts.multipart.saveDir=struts.multipart.maxSize=2097152 ##请求后缀 struts.action.extension=action,, struts.serve. static = true struts.serve. static .browserCache= true struts.enable.DynamicMethodInvocation = false struts.enable.SlashesInActionNames = false struts.mapper.action.prefix.enabled = false struts.mapper.action.prefix.crossNamespaces = false struts.tag.altSyntax= true ##开发模式 struts.devMode = false struts.i18n.reload= false struts.ui.theme=xhtmlstruts.ui.templateDir=template struts.ui.theme.expansion.token=~~~struts.ui.templateSuffix=ftl struts.configuration.xml.reload= false struts.velocity.configfile = velocity.properties struts.velocity.contexts = struts.velocity.toolboxlocation= struts.url.http.port = 80struts.url.https.port = 443 struts.url.includeParams = none struts.dispatcher.parametersWorkaround = false struts.freemarker.templatesCache= false struts.freemarker.beanwrapperCache= false struts.freemarker.wrapper.altMap= true struts.freemarker.mru.max.strong.size=0 struts.xslt.nocache= false struts.mapper.alwaysSelectFullNamespace= false struts.ognl.allowStaticMethodAccess= false struts.el.throwExceptionOnFailure= false struts.ognl.logMissingProperties= false struts.ognl.enableExpressionCache= true struts.handle.exception= true |
-
Struts.xml 配置信息
?
1 2 3 4 5 6 7 8 9 10 11 12 | <struts> <!--重置属性—> <constant name= "struts.devMode" value=http://www.mamicode.com/ "true" > </constant> <constant name= "struts.i18n.encoding" value=http://www.mamicode.com/ "urf-8" ></constant> <!--定义包—> <package name= "default" namespace = "/" extend= "struts-default" > <!--动作—> <action name= "" class = "" > <result name= "" class = "" ></result> </action> </package> </struts> |
?
1 2 3 4 5 6 7 8 9 10 | Constant 常量 Package 包 解决Action重名,方便继承 -name 包名 -extends 父包名 - namespace 命名空间 Action -name 动作名 - class 实现类 global-results 全局结果 Result 局部结果 |
第四节、Action 高级
-
method 属性
?
1 2 3 | <action name= "admin" class = "net.nw.action.AdminAction" method= "add" > <result>result.jsp</result> </action> |
-
DMI动态方法调用
?
1 2 3 4 | <action name= "admin" class = "net.nw.action.AdminAction" > <result>result.jsp</result> </action> <a href=http://www.mamicode.com/ "<%=path%>/admin/admin!add.action" >添加</a> |
-
Forword Action(页面跳转)
-
默认Action
?
1 2 3 4 | < default -action- ref name= "error" ></ default -action- ref > <action name= "error" > <result>error.jsp</result> </action> |
-
通配符映射
?
1 2 3 | <action name= "Student*" class = "net.nw.struts2.action.StudentAction" method= "{1}" > <result>/Student{1}_success.jsp</result> </action> |
?
1 2 3 4 5 | {0} 表示匹配所有内容 {1} 表示前面的第一个*的内容 * 0-N不包括 "/" ** 0-N包括 "/" \ 转义符 |
-
Zero Configuration (Annotation配置)
?
1 | 引入struts2-convention-plugin-2.2.1.jar包 |
?
1 2 3 4 5 6 7 8 9 10 11 12 | //web.xml <filter> …… <init-param> <param-name>actionPackages</param-name> <param-value>net.nw.action</param-value> </init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> |
?
1 2 3 4 5 6 7 8 | //注解 @parentPackage(value=http://www.mamicode.com/ "struts-default" ) @Namespace(value=http://www.mamicode.com/ "/" ) @Result(name= "login_success" ,location= "/login_success.jsp" ) @Results({ @Result(name= "login_success" ,location= "/login_success.jsp" , "type=" redirect"), @Result(name= "login_failure" ,location= "/login_failure.jsp" , "type=" redirect") }) |
-
包含模块
?
1 | <include file= "admin.xml" > |
-
出错页面
?
1 2 3 | <action name= "**" > <result>error.jsp</result> </action> |
第五节、访问Web元素以及Result类型
-
Action访问web对象四种方式:
1.创建request,session,application Map对象
?
1 2 3 | Map request = (Map)ActionContext.getContext(). get ( "request" ); Map session = ActionContext.getContext().getsession(); Map application = ActionContext.getContext().getApplication(); |
2.实现RequestAware,SessionAware,ApplicationAware接口 Map对象(常用)
3.创建传统的HttpServletRequest、HttpSession、ServletContext对象
?
1 2 3 | HttpServletReques request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); ServletContext application = session.getServletContext(); |
4.实现ServletRequestAware、ServletContextAware接口
-
Result类型
?
1 2 3 4 5 6 7 8 9 10 | Dispatcher:转发到URL,通常是JSP(服务器) Redirect:重定向到URL,通常是JSP(客户端) Chain:转发到一个Action(服务器) redirectAction:重定向到一个Action(客户端) freemarker:处理FreeMarker模型 Httpheader:控制特殊HTTP行为的结果类型 Stream:向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据 Velocity:处理Velocity模版 Xslt:处理XML/XLST模版 plainText:显示原始文件内容,例如文件源代码 |
第六节、Validation框架和i18n
第七节、OGNL(一)
第八节、OGNL(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。