struts2 基础

标签: jsp java struts2
5人阅读 评论(0) 收藏 举报
分类:

Action 获取 域 的三种方式

通过 ActionContext 获取

public class Demo05Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        // 使用ActionContext方式一 获取session域
        Map<String, Object> session = ActionContext.getContext().getSession();
        session.put("name", "james");
        // 获取aoolication域
        Map<String, Object> application = ActionContext.getContext().getApplication();
        application.put("name", "miku");
        // 获取 request 域 (不建议你 直接使用request域)
        // 如果想使用request域 系统推荐直接使用ActionContext这个map
        // 因为生命周期一样 一个请求 就创建一个 ActionContext 对象(推荐)
        ActionContext.getContext().put("name", "Tom");
        // 这种方式也可以直接从 ActionContext 对象中获取request对象(不推荐)
//       Map<String, Object> request = (Map<String, Object>) ActionContext.getContext().get("request");
//      request.put("name", "Tom");
        System.out.println("Demo05Action");
        return SUCCESS;
    }
}

第二种 ServletActionContext 获得

public class Demo06Action extends ActionSupport{

    @Override
    public String execute() throws Exception {
        // 获取原生servlet 对象
        HttpServletRequest request = ServletActionContext.getRequest(); 
        HttpServletResponse response = ServletActionContext.getResponse();
        ServletContext servletContext = ServletActionContext.getServletContext();
        HttpSession session = request.getSession();
        return SUCCESS;
    }
}

第三种 通过实现 ServletRequestAware 接口 获得

public class Demo07Action extends ActionSupport implements ServletRequestAware{
    private HttpServletRequest request;

    public Demo07Action() {
        System.out.println("Demo07Action 启动!");
    }
    @Override
    public String execute() throws Exception {
        this.request.setAttribute("name", "james");
        return SUCCESS;
    }

    @Override
    public void setServletRequest(HttpServletRequest request) {
        // 使用成员变量 赋值的方式得到原生的servlet对象
        this.request = request;
    }
}

Action 获取表单属性的三种方式

第一种 属性驱动

public class Demo08Action extends ActionSupport{
    // 利用属性驱动 获取提交的参数   
    // 注意:要提供 set/get 方法
    // 要使用表单中的name 作为属性名
    // struts 2 提供了 类型转换 支持基本数据类型的包装类
    private String username;
    private Integer age;
    // 只支持 2018-04-13 这个格式的类型转换
    private Date birthday;
    /*
     * 获取表单提交数据方式1
     * 创建form1.jsp 
     * 提交姓名 年龄 生日 date 
     */

    @Override
    public String execute() throws Exception {

        System.out.println(username);
        System.out.println(age);
        System.out.println(birthday);
        return SUCCESS;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }   
}

第二种 对象驱动

public class Demo09Action extends ActionSupport{
    // 声明一个 User 对象属性
    private User user;
    @Override
    public String execute() throws Exception {

        System.out.println(user);
        return SUCCESS;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }   
}
// 这里要注意一点
// 使用对象驱动 在jsp表单中 每个input标签中name  要更改成 user.名字 这种格式

第三种 模型驱动 (常用)

public class Demo10Action extends ActionSupport implements ModelDriven<User>{
    // 声明一个对象
    // 模型驱动必须要对 接收参数的对象 进行初始化
    // 注意 对象驱动 需要修改 form表单的name属性 
    // 模型驱动 不需要 原来怎么整现在就怎么整
    private User user = new User();


    @Override
    public String execute() throws Exception {
        System.out.println(user);   
        return SUCCESS;
    }

    // 实现接口中的方法
    @Override
    public User getModel() {
        // 直接返回user对象
        return user;
    }
}

struts2 自定拦截器创建三种方法

第一种 实现 Interceptor 接口

public class MyInterception1 implements Interceptor{

    // 拦截器的初始化方法
    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

    // 拦截方法
    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

    // 销毁方法
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
}

第二种 继承AbstractInterceptor

public class MyInterception2 extends AbstractInterceptor{

    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
}

第三种 继承 MethodFilterInterceptor 常用!

public class MyInterception3 extends MethodFilterInterceptor{

    // 拦截方法
    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        // 前处理
        System.out.println("前处理");
        // 放行方法
        // 所有拦截器都执行完毕后会拿到一个字符串
        // 这个字符串就是 action类 执行完毕后返回的字符串
        String result = invocation.invoke();
        // 后处理
        System.out.println("后处理");
        return result;
    }

}

拦截器配置

struts.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="inter" namespace="/" extends="struts-default">
    <!-- 1.注册拦截器 -->
    <interceptors>
        <!-- 注册自己定义的拦截器 -->
        <interceptor name="myinterception3" class="com.lanou3g.interception.MyInterception3"></interceptor>
        <!-- 注册拦截器栈 -->
        <interceptor-stack name="mystack">
            <!-- 除了应用自己的拦截器 还要应用系统自己的拦截器 -->
            <!-- 建议先放自己的拦截器 在放系统的拦截器
                 自己写的拦截器 可能会用到系统拦截器封装好的功能 -->
            <!-- 引入拦截器 -->
            <interceptor-ref name="myinterception3">
                <!-- 设置不想拦截的方法 -->
                <param name="excludeMethods">add,update</param>
            </interceptor-ref>
            <!-- 引入系统默认的拦截器栈 -->
            <interceptor-ref name="defaultStack"></interceptor-ref>
        </interceptor-stack>
    </interceptors>
    <!-- 设置默认的拦截器栈是哪个 -->
    <default-interceptor-ref name="mystack"></default-interceptor-ref>
    <global-results>
            <result name="toLogin" type="redirect">/login.jsp</result>
        </global-results>

        <!-- 配置全局异常类型 映射 -->
        <global-exception-mappings>
            <!-- exception 异常错误类型(全类名)  -->
            <!-- result 出现 异常 返回的结果字符串 -->
            <!-- action 可以根据这个 异常的结果 跳转一个页面 -->
            <exception-mapping result="error" exception="java.lang.RuntimeException"></exception-mapping>
        </global-exception-mappings>
    <action name="Demo01Action_*" class="com.lanou3g.interception.Demo01Action" method="{1}">
        <result name="add">/hello.jsp</result>
    </action>   
</package>
</struts>
查看评论

struts2的学习总结

Struts2学习总结 一、配置文件问题 首先,javaweb项目在运行时首先会查web.xml文档,比如我们直接在服务器上运行某一个项目时,localhost:8080/helloworld会直...
  • oliver233
  • oliver233
  • 2017-02-10 14:28:30
  • 422

Struts2基础之最简单的案例

1.下载相关的jar包2.创建web项目2.1.New一个web项目选择Dynamic Web Project(动态的web项目)。3.创建并完善相关配置文件3.1.引入jar包3.2.在web.xm...
  • moHedong
  • moHedong
  • 2016-09-07 18:06:59
  • 742

Struts2基础--Struts2(你必须要懂得基础)

01_Struts2概述 作者: 风离紫竹--tryzq521@126.com 1.Struts2是一款工作在表述层的大型、开源、免费框架。 2.工作在表述/表示层的...
  • u011200604
  • u011200604
  • 2016-06-17 00:03:03
  • 2999

Struts2 基础与案例开发详解ppt

  • 2014年03月25日 14:14
  • 5.6MB
  • 下载

Struts2项目所依赖的jar包

  • 2015年10月18日 17:14
  • 3.52MB
  • 下载

手把手教struts2入门案例(不用struts标签实现)

①先将struts2需要的jar包放到/WEB-INF/lib下面(jar包下载地址这里写链接内容) 注意:如果项目没有用到Plaxus、Sitegraph、Spring,添加时需要将strut...
  • c_p_h
  • c_p_h
  • 2017-03-27 13:44:18
  • 622

struts2基础jar包

  • 2016年09月09日 16:49
  • 3.17MB
  • 下载

Struts2框架入门

Struts2简介Struts2是在WebWork2基础上发展而来的。Struts2和Struts1一样,也都是属于MVC框架。不过有一点大家需要注意的是:虽然Struts2和Struts1在名字上差...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016-09-30 22:49:35
  • 1134

Struts2项目所依赖的基础jar包

1.Struts2-core-xxx.jar Struts2框架的核心类库 2.xwork-core-xxx.jar XWork类库,Struts2的构建基础 3.ognl-xxx.jar...
  • Zhaoruifeng158
  • Zhaoruifeng158
  • 2015-03-13 14:54:54
  • 578

Struts2.3.24项目配置所需最少依赖jar包

1、Web Project项目结构 2、web.xml的内容
  • u014744494
  • u014744494
  • 2015-07-27 20:20:50
  • 3690
    个人资料
    持之以恒
    等级:
    访问量: 4512
    积分: 588
    排名: 8万+
    文章存档