Struts2

控制层框架 struts2

  主要职责: 拦截请求和响应请求

  实现原理 基于过滤器进行封装 *.action

  1. 控制层配置

    方法1struts.xml中增加action节点(推荐)

    方法2采用注解的方法进行配置

  2.请求地址的配置

    格式1/user!add.action

    格式2/user.action

    extends继承ActionSupport类 

       实现execute()方法 

    这样请求 /user.action 就会执行execute方法   

package com.seecen.action;

import com.opensymphony.xwork2.ActionSupport;
import com.seecen.model.Page;
import com.seecen.model.User;
import com.seecen.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;

public class UserAction extends ActionSupport {
    
    @Autowired
    private UserService userService;

    private Page<User> page;

    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public Page<User> getPage() {
        return page;
    }

    public void setPage(Page<User> page) {
        this.page = page;
    }

    //struts.xml中的action的name名称  
    // name名称.action就会默认执行这个方法
    @Override
    public String execute() throws Exception {
        page = userService.findUserByPage(new Page<>());
        return SUCCESS;
    }
}

    

    格式3/backend/user!update.action

  struts.xml中配置

<package name="backend" extends="basePackage" namespace="/backend">

3.请求阶段响应阶段传递参数

    通过成员变量传递参数类级别的控制层框架)

    服务器向客户端响应数据

    例如列表查询功能

    客户端向服务器端请求数据

    例如登录功能

  4.重定向

<result name="success" type="redirect">/user.action</result>

5.request session application的使用

    静态方法全局获取request对象

    Extends继承自己封装的一个封装类(BaseAction)

package com.seecen.action;

import com.alibaba.fastjson.JSON;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/**
 *自己封装的一个类
 */
public class BaseAction extends ActionSupport {

    protected HttpServletRequest request = ServletActionContext.getRequest();
    protected HttpSession session = request.getSession();
    protected ServletContext application = ServletActionContext.getServletContext();
    protected HttpServletResponse response = ServletActionContext.getResponse();


    /**
     * json日期转换
     * @param obj
     */
    protected void writeJson(Object obj){
        response.setContentType("text/html;charset=UTF-8");
        String json = JSON.toJSONStringWithDateFormat(obj,
                "yyyy-MM-dd HH:mm:ss");
        try {
            PrintWriter out = response.getWriter();
            out.write(json);
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

  6.全局返回结果

    在struts.xml增加一个节点

<global-results>
    <!-- 当返回login视图名时,转入/login.jsp页面 -->
    <result name="toLogin" type="redirect">/login.action</result>
</global-results>

  7. 异步请求

    验证用户名

   请求阶段

         1. 拦截异步请求和同步请求方法一样

  响应阶段

   返回json格式的数据(封装接口|定义接口)

方法1

  往response对象中写json字符 

方法2

  Struts帮我们把对象转换成json字符

  8.文件上传

    通过成员变量解析获取上传的文件

  9 .拦截器配置

  权限验证

<interceptors>
    <!-- 权限拦截器 注:可以定义多个拦截器-->
    <!-- session拦截器,-->
    <interceptor name="auth" class="com.seecen.interceptor.AuthInterceptor"></interceptor>
    <interceptor name="auth2" class="com.seecen.interceptor.AuthInterceptor2"></interceptor>
    <!-- 拦截器栈 注:栈中配置运行时需要执行的拦截器-->
    <interceptor-stack name="mystack">
        <interceptor-ref name="defaultStack"/>
        <!-- 权限拦截  -->
        <interceptor-ref name="auth"/>
        <interceptor-ref name="auth2"/>
    </interceptor-stack>
</interceptors>

<!--默认拦截器-->
<default-interceptor-ref name="mystack"></default-interceptor-ref>

  10.标签库(jstl

   简化页面内容的动态化

  迭代标签(c:foreach)

 <s:iterator value="page.list" status="S" var="item">

  If 标签

<s:if test='userName=="zs"'>
    张三
</s:if>
<s:else>
    其他
</s:else>

  日期

<s:date name="createTime" format="yyyy-MM-dd"></s:date>

表单标签库

    下拉

    <s:select>

    复选框

    <s:checkboxlist>

    单选框

    <s:radio>

表单值的回显

注:checkboxlist回显需要传递一个数组

 

posted @ 2019-09-11 21:58  changlinlo  阅读(181)  评论(0编辑  收藏  举报