31________struts2_1_入门_常量_通配符_域对象
- 格式:doc
- 大小:27.25 KB
- 文档页数:19
Struts2配置文件中使用通配符收藏形式一:调用相同Action中的不同方法<action name="*Action" class="Jcuckoo.LoginRegistAction" method="{1}"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>其中表达式{1}的值name属性值中第一个*的值。
如果用户请求的URL为loginAction.action,则调用Jcuckoo.LoginRegistAction中的login方法;如果用户请求的URL为registerAction.action,则调用Jcuckoo.LoginRegistAction中的register方法;形式二:通过匹配,调用不同的Action的execute方法<action name="*Action" class="Jcuckoo.{1}Action"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>上面没有出现method属性,故默认调用对应的execute方法如果用户请求的URL为LoginAction.action,则调用Jcuckoo.LoginAction中的execute方法;如果用户请求的URL为RegisterAction.action,则调用Jcuckoo.RegisterAction中的execute方法;形式三:动态结果<action name="crud_*" class="Jcuckoo.CrudAction" method="{1}"><result name="input">/input.jsp</result><result>/{1}.jsp</result></action>当处理结果是input时,会转到/input.jsp页面当处理结果是success时,如果crud_create.action,则会执行Jcuckoo.CrudAction中的create方法,并且跳转到/create.jsp;如果crud_delete.action,则会执行Jcuckoo.CrudAction中的delete方法,并且跳转到/delete.jsp;。
Struts2⽂件配置介绍Struts2⽂件配置介绍struts2structs.xml⽂件配置标签package标签<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 配置post请求以及repsone的编码格式 --><constant name="struts.i18n.encoding"value="UTF-8"></constant><!-- 配置请求路径的扩展名 --><constant name="struts.action.extension"value="action,,"></constant><!-- 开启热部署 --><constant name="struts.devMode"value="true"></constant><package name="index"namespace="/"extends="struts-default"><action name=""class="erAction"method="toLogin"><result name="toLogin">/WEB-INF/view/login.jsp</result></action></package><include file="com/forward/test/web/action/struts.xml"></include></struts>配置web应⽤的不同模块,⼀般在⼀个功能模块下配置⼀个package,在当前的package下配置这个模块的多个action name属性给不同的模块起不同的名字,随便写,不重复即可namespace属性给不同的模块设置访问的根路径,可以配置成/extends属性表⽰继承, struts-default 是struts2给我们提供的⼀个packageaction标签action 标签表⽰配置⼀个请求name 属性表⽰请求路径的后缀,⼀般表⽰功能模块中的具体请求,name的名字就代表访问路径的名称class 属性表⽰当有请求过来的时候调⽤的是哪个类中的⽅法,配置全类名method 表⽰class 请求调⽤的是class 中的哪个⽅法,指的是具体的⽅法名result标签result 结果配置,⽤于设置不同的⽅法返回值,可以配置不同的返回值对应不同的视图name 属性表⽰结果处理名称,与action中的返回值对应type 属性表⽰指定哪个result 类来处理显⽰的页⾯,默认是内部转发,可以在struts-default 的⽂件中进⾏查看标签体表⽰相对路径,相对于web应⽤开始常量配置默认的常量配置在structs核⼼包中修改常量配置⽅式及加载顺序对于常量的配置, 默认加载的是structs核⼼包中的default.properties,如果通过以下3种进⾏配置,就会按照默认–>1–>2–>3 的顺序加载,后⾯设置的常量会覆盖之前设置的常量1. 在structs.xml⽂件中,在structs的根标签下,书写constant 标签进⾏配置,在项⽬中主要使⽤这种⽅式2. 在src下创建structs.properties⽂件,将内容复制到此⽂件进⾏修改3. 在web.xml⽂件中,配置context-param 第⼀种⽅式第⼆种⽅式第三种⽅式常⽤常量设置struts.i18n.encoding=UTF-8 ⽤于配置接收参数和向外输出中⽂的编码格式⼀般设置为UTF-8struts.action.extension=action, 指定访问action的路径的后缀名,使⽤, 表⽰可以有两个后缀名,可以是action也可以是没有后缀名struts.devMode = false 指定structs是否是以开发模式运⾏,能够⽀持修改配置⽂件后进⾏热部署,所以我们可以将其设置为true动态⽅法调⽤如果⼀个业务模块有多个⽅法,我们可以使⽤动态⽅法调⽤省略action的配置,设置动态⽅法调⽤有两种⽅法⽅法⼀开启动态⽅法调⽤<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>配置action的时候不写method在访问的时候输⼊⽹址http://localhost:8080/webapp/namespace/name!method ⽅法⼆ 通配符⽅式关闭动态⽅法调⽤对于⽅法名可以使⽤⼀个* 通配符,在后⾯的class和method可以使⽤{索引} 来读取前⾯的内容访问路径localhost:8080/webapp/namespace/class_methodstructs2中的默认配置<constant name ="struts.enable.DynamicMethodInvocation" value ="true"></constant><package name ="helloWorld" namespace ="/User" extends ="struts-default"><action name ="d_" class ="com.zhiyou100.struts.web.action.demo3.Demo3Action" ><result name ="success">/hello World.jsp </result></action> </package><package name ="demo3" namespace ="/User" extends ="struts-default"><action name ="*_*" class ="com.zhiyou100.struts.web.action.demo3.{1}" method ="{2}"><result name ="success">/helloWorld.jsp </result></action></package>method的默认值executeresult的默认值是successresult的type的默认值是dispatcherclass的默认值是ActionSupport 其中有execute ⽅法返回值是success配置package下的默认的action,当访问当前包下,如果找不到指定action,就会⾃动寻找默认的action <package name="default"namespace="/user"extends="struts-default"><default-action-ref name="demoAction"></default-action-ref><action name="demoAction"class="erAction"><result>/WEB-INF/view/404.jsp</result></action></package>结果跳转的⽅式结果的跳转⽅式可以通过result的type属性进⾏设置转发转发到指定页⾯对于type属性,默认是dispatcher ,就是转发到响应界⾯,可以不⽤进⾏配置转发到指定action对于type属性需要设置为chain ,并在其下⽅配置<param> 标签<result name="error"type="chain"><param name="namespace">/</param><param name="actionName"></param></result>重定向重定向到指定界⾯对于type属性,设置为redirect ,就是重定向到界⾯,如果需要进⾏重定向就必须进⾏此处的设置<result name="error"type="redirectAction"><param name="namespace">/</param><param name="actionName"></param></result>。
struts2-convention-plugin 注解使用说明概述及解释说明1. 引言1.1 概述在现代的Web开发中,Struts2作为一个成熟稳定的Java Web框架,在业界得到广泛应用和认可。
而struts2-convention-plugin则是Struts2框架中一个重要的插件,它通过引入注解的方式来简化配置文件,并提供了一种更便捷、高效的开发方式。
1.2 文章结构本文将详细介绍struts2-convention-plugin的注解使用说明,并以概述、注解说明、使用示例等部分来逐步讲解。
接着,我们将对其进行解释说明,包括与传统struts.xml配置方式的比较、使用时需要注意的事项以及实际应用案例。
最后,我们将总结文章要点并给出对于注解方式的评价和展望。
1.3 目的本文旨在帮助读者更好地理解和掌握struts2-convention-plugin插件中注解的使用方法。
通过本文介绍和示例演示,读者将能够快速上手并灵活运用该插件,从而提高开发效率和代码质量。
以上是“1. 引言”部分内容,请根据需要进行修改和补充。
2. struts2-convention-plugin 注解使用说明:2.1 概述:struts2-convention-plugin 是Struts2 框架中的一个插件,它提供了一种基于注解的方式来配置和管理Action 类。
通过使用这个插件,我们可以简化传统的XML 配置文件,并且能够更加便捷地进行开发。
2.2 注解说明:struts2-convention-plugin 提供了一系列的注解,用于配置和定义Action 类及其相关属性和方法。
以下是常用的几个注解:- @Action:用于标识一个方法作为Action 的入口方法,可以指定URL 映射及HTTP 请求类型。
- @Result:用于指定一个结果视图,可以定义对应的视图页面、重定向操作等。
- @Param:用于将请求参数绑定到Action 类的属性上。
struts2入门手册首先这个教程是基于你已经安装了myeclipse的基础上的,如果你还没有安装myeclipse 工具软件的话,你需要马上去安装一个。
如果你已经有了工具软件了的话,现在就按照以下步骤来入门struts2吧。
一、下载struts2进入struts的官网/,点击download,选择Full Distrybution:下的struts2-xxx-all.zip,下载struts2的最新版本,将压缩包解压,放置到D盘目录下。
二、解压struts2进入你解压后的struts2文件夹中,到D:\struts2-xxx\apps中,解压其中的struts2-blank.war 压缩文件到D:\struts2-xxx\example,这是struts2提供的基础例子,里面的WEB-INF\lib目录下的包正是struts2正常工作所需要的基本包。
三、导入struts2基本包打开你的myeclipse,创建一个web project工程,命名为test(你也可以自己随意起一个),不要急着点击Finish,先选择Next>,继续选择Next>,在弹出的对话框中把第二个单选框打勾,如图,再点击Finish。
创建好之后在你创建的工程上目录下的WebRoot/WEB-INF/lib目录上单击右键,选择import...,选择General下的File System,点击Next>,选择Browse...,浏览选择到D:\struts\example\WEB-INF\lib目录,点击确定。
选择Sellct All,点击Finish,就完成了struts需要的最基础的核心包的导入。
四、用struts实现一个简单的登陆验证1.修改工程目录下的WebRoot\WEB-INF目录下的web.xml文件,将里面的内容替换为如下代码:<?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0"><display-name>test</display-name><!-- 设置初始页面的URL --><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><!-- 设置struts过滤器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>2.在工程的src目录下创建struts.xml,代码如下:<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 是否开启动态方法调用 --><constant name="struts.enable.DynamicMethodInvocation"value="false"/> <!-- 指定被struts2处理的请求的后缀类型,多个用逗号隔开 --><constant name="struts.action.extension"value="action"/><!-- 设置浏览器是否静态缓存内容,开发阶段最好关闭 --><constant name="struts.devMode"value="true"/><!-- 设置当struts.xml改动后,是否重新加载,默认为false,开发环境下最好打开 --> <constant name="struts.configuraction.xml.reload"value="true"/> <package name="myPackage"namespace="/"extends="struts-default"> <action name="login"class="action.LoginAction"><result name="success">/welcome.jsp</result> <result name="input">/login.jsp</result></action></package></struts>3.在工程的src目录下创建package(包),命名为action,在action中新建class,命名为LoginAction,代码如下:package action;import javax.servlet.http.HttpSession;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.ServletActionContext;@SuppressWarnings("serial")public class LoginAction extends ActionSupport {private String name;private String password;public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String forward() throws Exception {return SUCCESS;}//重载ActionSupport中的execute()方法public String execute() throws Exception {//验证输入的Name是否为"name",是则返回"success"否则返回"input"if("name".equals(name)) {HttpSession session = ServletActionContext.getRequest().getSession();session.setAttribute("name", name);return SUCCESS;} else {return INPUT;}}}4.在工程的WebRoot目录下创建login.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Login</title></head><body><!-- 创建一个登陆表单 --><s:url action="login"id="loginUrl"></s:url><s:form action="%{loginUrl}"method="post"><s:textfield label="Name"name="name"/><s:password label="Password"name="password"/><s:submit></s:submit></s:form></body></html>5.在工程的WebRoot目录下创建welcome.jsp,代码如下:<%@page language="java"contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib prefix="s"uri="/struts-tags"%><!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Welcome</title></head><body><h1>登陆成功</h1></body></html>现在就来验证一下我们的登陆页面吧,选择工具栏中的按钮,在弹出的对话框中单击project后的矩形选框,从下拉列表中选择你创建的工程,然后单击Add,从弹出的对话框中单击sever后的矩形选框,从下拉列表中选择tomcat7,单击Finish。
一、发展历史及简介发展历史Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
这个框架之所以叫"Struts",是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
早期Smalltalk程序语言便采用了MVC(Model-View-Controller)模式(Patterns)以增加程序代码弹性,MVC模式将程序代码整理切割为三部分,Model部分是业务与应用领域(Business domain)相关逻辑、管理状态之对象,Controller部分接收来自View所输入的资料并与Model部分互动,struts业务流程控制(Flow Control)之处,View部分则负责展现资料、接收使用者输入资料。
在Java应用中,JFC/Swing、AWT、JSP皆是可用作View的技术规格,而JavaBean与Enterprise JavaBean规格则可用于Model程序代码,一旦应用程序以MVC模式加以适当的分割,Model部分程序代码可在不同使用者接口外观的应用程序中重复使用。
随着JSP与Servlet技术大量应用于以Web为基础的应用程序,Java开发人员群体认为应以较佳的模式以提升Web应用程序的可维护性与重复使用性。
1. Struts2简介1.1. 什么是Struts21.1.1. Struts2的概念Struts2是轻量级的MVC框架,它主要解决了请求分发的问题,重心在于控制层和表现层。
轻量级,指的是Struts2具有较低的侵入性,就是它对我们业务代码的依赖程度很低,简单来说,在使用Struts2框架时,我们的业务代码中基本上不需要import它的包。
Struts2实现了MVC,满足了MVC设计思想。
在我们使用Struts2做开发的时候,就相当于使用了MVC,这是Struts2自动帮助我们实现的,是默认的、隐含的,我们不需要再写特别的代码来实现MVC了。
作为一个框架,Struts2提供了一系列的API,我们可以使用它们来简化代码的编写,从而提升开发效率。
这些API复用程度很高,对业务代码的依赖性也很小,甚至很多是Struts2自动调用的,因此在很大程度上,我们的开发变得可以复用。
Struts2解决请求分发的问题,我们会在后面为什么使用Struts2中讲解。
重心在控制层和表现层,是纵观整个Struts2理论课程来看的,从中我们会体会到这一点,随着大家对Struts2的逐步了解,届时我们再回顾这一点。
1.1.2. 什么是MVCMVC是代码的分层思想,是软件设计领域经典的设计模式。
它根据代码功能的不同,将一个软件的代码分为3部分,即模型、视图、控制器,这3部分代码的含义和功能如下。
1、M-Model 模型模型(Model)的职责是负责业务逻辑。
包含两层:业务数据和业务处理逻辑。
比如实体类、DAO、Service都属于模型层。
2、V-View 视图视图(View)的职责是负责显示界面和用户交互(收集用户信息)。
属于视图的组件是不包含业务逻辑和控制逻辑的JSP。
3、C-Controller 控制器控制器是模型层M和视图层V之间的桥梁,用于控制流程。
比如:在Servlet项目中的单一控制器ActionServlet。
Struts2的通配符配置⽅式Struts2的Action类很有意思,你可以使⽤3种⽅式来实现具体的Action类:1. 让你的Action类继承⾃ActionSupport类(项⽬中最常⽤这种⽅式,因为ActionSupport类中定义了很多帮助⽅法)2. 让你的Action类实现Action接⼝3. 使⽤POJO的⽅式来实现,只要Action类中有⼀个返回值为String的execute⽅法就好了(这种⽅式使Action类最容易被测试)以上三种Action的实现⽅式都可以被struts2框架⾃动识别,如果你在struts.xml⾥⾯配置了⼀个action块但是没有配置action类的路径,这样框架默认使⽤ActionSupport来处理请求。
但是在实际使⽤struts2的过程中我发现了⼀个问题,⼀个Action只有⼀个execute⽅法来处理⼀类请求,如果我开发的某块功能有100个不同的请求那我岂不是要写100个Action类,每个类实现⼀个execute⽅法,这样虽然满⾜了⼀个类⼀个责任的设计原则,但是会不会造成“类爆炸”?后来看了struts2的⽂档才知道,其实我们可以使⽤struts2灵活的通配符配置来达到减少action类的⽬的:先来看看⼀个简单的时序图请求从这个页⾯发起,只是简单的两个链接<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><a href="infoadd">ADD INFO</a><br><a href="infodel">DEL INFO</a><br></body></html>请求的控制转发是在struts.xml⾥⾯配置的<struts><constant name="struts.enable.DynamicMethodInvocation" value="true"/><package name="mypack" extends="struts-default"><action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}"><result>/{1}info.jsp</result><allowed-methods>add,del</allowed-methods></action></package></struts>上⾯这个XML的配置内容有⼏点需要注意:1. 我开启了struts2的RMI,apache struts基于安全性考虑,RMI默认是关闭的。
开发环境:MyEclipse6.5+Tomcat6.0+JDK1.5一、下载struts-2.0.11-all二、新建一个Web Project,命名为struts2,新建login.jsp和result.jspLogin.jsp主要内容如下result.jsp(也可以用username:<%= request.getParameter("username") %>)在Tomcat6.0的conf 下的server.xml下增加一句话三、将需要的包复制到项目struts2下的lib中(暂时只需5个)四、修改struts2下的web.xml,增加过滤器五、新建一个包,命名为com.test.action,再新建一个名为LoginAction 的类,类中内容如下六、在struts2下的src下新建一个struts.xml内容为:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="struts2" extends="struts-default"><action name="login" class="com.test.action.LoginAction" method="execute"><result name="success">/result.jsp</result></action></package></struts>七、开启tomcat,在浏览器中浏览注:我并没有更改编码,所以测试数据用英文,否则会乱码八、使用struts2的标签库,并增加对用户的验证新建一个login2.jsp注意:form的action属性内容改为login,这是标签库的简化效果,Label表示文本框前面是提示修改类LoginAction(注意增加的内容)注意:this.addFieldError("username","username required") "username" 针对表单中文本框的名称"username required" 是提示的错误信息在调用这个类时,会先调用validate方法验证用户名和密码是否为空,然后再运行execute方法。
Struts2教程Struts2教程1:第一个Struts2程序在本系列教程中我们将学习到Struts2的各种技术。
在本教程中使用的工具和程序库的版本如下:开发工具:MyEclipse6Web服务器:Tomcat6Struts版本:Struts2.0.11.1JDK版本:JDK1.5.0_12J2EE版本:JavaEE5.0在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http://localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到去下载Struts2安装包。
要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。
struts2-core-2.0.11.1.jarxwork-2.0.4.jarcommons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarStruts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。
Struts2实际上是在Webwork基础上构建起来的MVC框架。
我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。
既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。
如果大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。
让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。
1. 安装Struts。
由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。
struts2的关于method=“{1}"意思详解<action name= "Login_* " method= "{1} " class= "mailreader2.Login ">中Login_*带*是什么意思?method= "{1} "带{}这个是什么意思?====================================================name= "Login_* "代表这个action处理所有以Login_开头的请求method= "{1} "根据前面请求Login_methodname,调用action中的以methodname命名的方法class= "mailreader2.Login "action的类名称如jsp文件中请求Login_validateUser的action名称,根据上面配置,调用action类mailreader2.Login类中方法validateUser()又如:对于Login_update请求,将会调用mailreader2.Login的update()方法。
它的用法同webwork中的!符号的作用,相当于是一个通配符。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++Struts2 学习笔记4--Action Method--接收参数文章分类:Java编程struts2中的路径问题注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp 的根路径,即MyEclipse web项目中的WebRoot路径。
总结:struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
Struts2中的constant配置详解1.<constant name="struts.i18n.encoding" value="UTF-8" />指定Web应⽤的默认编码集,相当于调⽤ HttpServletRequest的setCharacterEncoding⽅法。
2.<constant name="struts.i18n.reload" value="false"/>该属性设置是否每次HTTP请求到达时,系统都重新加载资源⽂件。
该属性默认值是false。
在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false。
3.<constant name="struts.custom.i18n.resources" value="application"/>该属性指定Struts 2应⽤所需要的国际化资源⽂件,如果有多份国际化资源⽂件,则多个资源⽂件的⽂件名以英⽂逗号(,)隔开。
4.<constant name="struts.action.extension" value="action" />该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。
如果⽤户需要指定多个请求后缀,则多个后缀之间以英⽂逗号(,)隔开。
5.<constant name="struts.serve.static.browserCache " value="true" />设置浏览器是否缓存静态内容,默认值为true(⽣产环境下使⽤),开发阶段最好关闭。
struts2通配符的使用详解(5篇)第一篇:struts2通配符的使用详解struts2的配置文件是 struts.xml..在这个配置文件里面可以使用通配符..其中的好处就是,大大减少了配置文件的内容..当然,相应付出的代价是可读性..使用通配符的原则是约定高于配置.在项目中,我们有很多的命名规则是约定的...我们使用通配符那就必须有一个统一的约定.否则通配符将无法成立看下面的例子.(1)先看我们的action配置/user_{1}.jsp 带红字的解释下,第一个带“*” 表示的是后面匹配任意字符...这个很容易理解{1}表示的是第一个“*”的内容...注意,这里的大括号,比如,如果是user_add.那么{1}就是表示add..当然,这里只有一个“*”.你可以有两个,甚至三个四个..比如这样写*_* 这样就是两个“*”.那么我们也可以用{1},{2}来分别的表示他们.(2)对应的action 内容package com.test.action;importcom.opensymphony.xwork2.ActionSupport;@SuppressWarnings (“serial”)public class UserAction extends ActionSupport { public String add(){ return SUCCESS;} public String delete(){ return SUCCESS;} public String update(){ return SUCCESS;} public String select(){ return SUCCESS;} } 因为是举例子,所以每个方法里面都没实现内容(3)其他就是几个jsp页面.其中user_*.jsp页面没什么好说的,就是显示一句话.比如user_add.jsp就是显示“这是添加页面” 其他的类似.就是为了让我们看到已经跳转到对应的页面.index.jsp写一下<%@ page language=“java” contentType=“text/html;charset=UTF-8”pageEncoding=“UTF-8”%> <% Str ing path = request.getContextPath();String basePath = request.getScheme()+“://”+request.getServerName()+“:”+request.getServerPort()+path+“/”;%>”>添加页面删除页面修改页面查找页面第二篇:action通配符首先,看一个struts2的配置文件:Java代码1.2.3./Student{1}_success.jsp4.5.这里,“{1}”表示第1个*,例如,当请求以下路径时:引用*为add,因此method=“add”,返回的页面为/Studentadd_success.jsp 即实际调用的是StudentAction中的add 方法。
题目1以下不属于Struts2中result的type属性()A.actionB.redirectC.redirectActionD.dispatcher题目2下列有关拦截器说法错误的是?A。
struts通过拦截器完成执行action请求处理方法前一系列操作。
例如:数据封装、文件上传、数据校验等B。
在struts中,直接访问jsp页面,struts将使用默认拦截器栈处理当前请求。
C。
在执行action时,struts将执行若干拦截器1、2、3,执行action完成后,将继续执行拦截器3、2、1D。
默认情况,在一个action没有配置拦截器的引用,说明当前action将不使用拦截器题目3以下哪些是Action接口提供的返回值?A。
successB.noneC。
errorD.input题目4如果要实现struts2的数据检验功能A普通的Action类可以实现B继承自Action接口的可以实现C继承自ActionSupport类可以实现D继承自ActionValidate类可以实现题目5struts2默认的处理结果类型是:A。
dispatcherB。
redirectC.chainD.forward题目6在值栈的上下文Context中,存在一些固定的key表示不同的对象,以下描述正确的是?A。
request,表示request作用域的数据B。
session,表示session作用域的数据C.application,表示application作用域的数据D。
parameters,表示请求参数的所有数据题目7以下属于struts2配置文件中的配置元素是:()多选)A.〈package〉B.<action〉C.<form—beans〉D.〈action—mappings>题目8有关值栈 context Map栈数据操作描述正确的是?A.ActionContext.getContext()。
put(key,value)直接对context进行操作B。
包名 com代表的是商业化要收费的营业性的org代表的是免费的pg, 程序员******************************************************************************** ********************只有单实例才考虑线程安全问题多实例不考虑线程安全问题servlet 和 filter 单实例多线程运行 --注意线程安全问题(并发)struts2不考虑线程问题(多实例)struts2是一个实例,一个线程而 servlet中是一个实例多个线程访问单实例一般比较快 struts2官方认为new 一个对象的时间可以忽略不计在javaWeb中的request session 都是Map集合在struts2中是将session中的内容取出来,放置到Map集合中(这个Map集合是struts2提供的);自己创建的Map不行线程绑定 threadLocal━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━不用servlet 不用strut2时对于jsp页面中的请求访问一个类时的实现1.jsp页面请求2.接口3.众多类实现该接口4.返回通过过滤器拦截所有的jsp 和 serlvet 将请求路径中的路径名和需要访问的类绑定到一块具体实现:在Filter中定义一个Map集合 key为请求的路径名 value为需要访问的类名(包名+类名) 其实一般是放在xml文件中在Filter中的init(FilterConfig filterConfig)方法中添加需要绑定的路径名和类名(包名加+类名)在doFilter(、request, 、response,chain)方法中通过request.getServletPath获取请求中的路径名(该方法获取的不是全路径,只是请求路径中最后"/"后的路径)然后通过反射获取类的实例对象以接口为对象获取它的实例对象然后调用其方法调用request.getRequestDispatcher("").forword(request,response);跳到需要返回的页在struts中原理于其差不多也是通过过滤器访问大概流程:1.jsp页面请求2.struts2定义好的接口3.实现该接口4.返回在struts2框架中封转好了过滤器在struts2对于过滤器中的Map 即xml文件是struts.xml文件过滤器加载xml文件━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━-----------------------------------------------------------------------------------------------------------------------------------------【struts2概述:】Struts2 是一个用来开发 MVC应用程序的框架. 它提供了 Web 应用程序开发过程中的一些常见问题的解决方案:对页面导航活动进行管理对来自用户的输入数据进行合法性验证统一的布局可扩展性国际化和本地化支持 Ajax表单的重复提交…-------------------------------------------------------------------------------------------------------------------------------------【Struts2的启动配置】在struts2中,struts框架是通过Filter启动的。
在web.xml中的配置如下:<filter><filter-name>StrutsPrepareAndExecuteFilter</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil ter</filter-class><!-- 自从Struts 2.1.3以后,下面的FilterDispatcher已经标注为过时<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> --></filter><filter-mapping><filter-name>StrutsPrepareAndExecuteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>【【在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。
】】注意:struts2读取到struts.xml的内容后,是将内容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml 文件----------------------------------------------------------------------------------------------------------------------------------------******************************************************************************** *****************************************strurts2中引入源码即struts-2.3.1.1-all.zip一、strurs2的原理:******************************************************************************** ******************************************struts2的处理流程:客户端请求---->StrutsPrepareAndExecuteFilte(web.xml中配置的过滤器) --->----> Interceptor(struts-default.xml,struts2内置的一些拦截或者自定义的拦截器)----->----->action -----> result 返回的结果 ----> html,jsp响应struts2使用分离关注的方式:把过滤器要完成的事情委托给多个类完成,这种观点就是离关注,过滤器负责调用这些类(即拦截器)******************************************************************************** ******************************************----------------------------------------------------------------------------------------------------------------------对于【xml文件中不提示】的问题,引入dtd(将要引入的dtd文件拷贝到本地上)在window ---> references ----> myeclipse --->Files and Editors --->XML---> XML ---> Catalog ----> 选中User Specified Entries点击add在Location中点击File System 引入要的dtd文件例:E:\tld\struts-2.3.dtd在key中写入dtd文件的名字例:-//Apache Software Foundation//DTD Struts Configuration 2.3//EN<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd">----------------------------------------------------------------------------------------------------------------------在strurs2的Jar包找 strurs.xml 需要的文件(也可以找struts2-core-2.3.1.1.jar 下的strurs-defalut.xml文件中的引入的dtd)1.找dtd : struts2-core-2.3.1.1.jar下的dtd文件打开,<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd">2.在web.xml中配置strurs2的过滤器找strurs2的过滤器文件 .javastruts2-core-2.3.1.1.jar --> org.apache.struts2.dispatcher.ng.filter ---> StrutsPrepareAndExecuteFilter.class 找到其中的过滤器的类名<filter><filter-name>StrutsPrepareAndExecuteFilter</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil ter</filter-class></filter><filter-mapping><filter-name>StrutsPrepareAndExecuteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>------------------------------------------------------------------------------------------------------------------------二、【struts2开发步骤:】搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1》创建javaweb工程2》找到开发Struts2应用需要使用到的jar文件.3》创建jsp文件.4》创建action文件5》编写Struts2的配置文件6》在web.xml中加入Struts2(即过滤器) MVC框架启动配置三、开发Struts2需要的jar文件到/download.cgi#struts2014下载struts-2.x.x-all.zip,目前最新版为2.3.1.1。