Struts2的用法之二

来源:互联网 发布:淘宝商家怎么做活动 编辑:程序博客网 时间:2024/06/05 06:41

Action的几种开发模式

1、写一个类继承ActionSupport,可以使用这个类的一些功能
2、写一个类实现Action接口,重写execute方法,不能使用ActionSupport中定义的方法
3、既不继承也不实现,直接在该类中编写一个方法处理我们的逻辑,什么功能也不能实现

struts的通配符

<action name="user_*_*" class="" method={1}"><result name="{1}">/{2}.jsp</result></action>

struts的路径匹配

namespace=”/”默认的命名空间
namespace=”/a”自定义的命名空间
localhost:8080/项目名/a 访问路径
匹配原则
如果是localhost:8080/项目名/a/b/c这样的路径,那么它的查找方法如下
*/a/b/c
*/a/b
*/a

struts的常量使用
找到default.properties文件
修改里面的常量

 <!--这个就是表示的上传文件的大小的最大值-->     <constant name="struts.multipart.maxSize" value="123456789"></constant>     <!--设置的是struts的编码-->     <constant name="struts.i18n.encoding" value="UTF-8"></constant>     <!--设置的是struts默认的访问后缀       value="action的时候表示的是后缀必须是action 否则访问不到"       value="action,do":表示后缀只能是action或者do不能是其他的       value="action,do,":表示后缀可以是action或者do或者没有后缀     -->     <constant name="struts.action.extension" value="action,do,"></constant>     <!--允许动态方法的调用  动态方法就是在actionName的基础上直接加上!再加上方法名  这样直接去指定执行某一个方法 就叫做动态方法      -->     <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>     <!--xml改变之后自动的加载文件-->     <constant name="struts.configuration.xml.reload" value="true"></constant>

struts的默认配置
全局结果集(原则局部优先)

<global-results>             <result name="success">/index.jsp</result>     </global-results>

由于struts-default有默认action配置

 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

action可省略类和方法
struts的数据处理
1、通过Servlet的API去完成数据放置到域对象中
(问题产生struts与servlet耦合问题)

         HttpServletRequest request = ServletActionContext.getRequest();         HttpSession session = request.getSession();         ServletContext application = ServletActionContext.getServletContext();         //向域对象里面添加数据         request.setAttribute("request_","这里是request对象的数据");         session.setAttribute("session_","这里是session对象的数据");         application.setAttribute("application_","这里是application对象的数据");

2通过ActionContext去获取域对象

         ActionContext context = ActionContext.getContext();         //通过实例获取域对象         Map<String, Object> session = context.getSession();         Map<String, Object> application = context.getApplication();         Map<String, Object> request = context.getContextMap();         //向域对象里面添加数据   session.put("session_", "Session的数据");   request.put("request_", "resuest的数据");   application.put("application_", "application的数据");

3、通过实现RequestAware 或者 SessionAware 或者 ApplicationAware来实现将数据放到域对象中去
*并且设置三个字段的set方法*struts自动帮我们注入域对象中去
这个方法可以作为基类

 public class CustomAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{private Map<String, Object> application;private Map<String, Object> session;Map<String, Object> request;}

struts的数据自动封装

1、创建javabean对象
2、创建一个类继承ActionSupport
在这个类中写
方法一、set方法注入

注意以前的版本的注入方式:
采用构造方法的方式(eclipse中)

private User user=new User();

当前版本的注入方式(MyEclipse):

private User usepublic void setUser(User user) {        this.user = user;}public User getUser() {        return user;}

日期类型的转换器
写一个类继承StrutsTypeCover
重新方法

convertFromString:将字符串转换成其他的类型
convertToString:将其他的类型转换成字符串

编写配置文件

1、 配置文件名称必须是 ActionName-conversion.properties
格式 java.util.Date=action全路径
2、配置文件的内容:转换器的属性 JavaBean对象.属性
3、配置文件必须位于Action同目录下

0 0
原创粉丝点击