Struts2的用法之二

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 use
public 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同目录下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值