zoukankan      html  css  js  c++  java
  • 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回显需要传递一个数组

     

  • 相关阅读:
    ubuntu下cmake自动化编译的一个例子
    KL变换和PCA的数学推导
    tensorflow c++ API加载.pb模型文件并预测图片
    tensorflow c++接口的编译安装与一些问题记录
    深度增强学习--总结下吧
    深度增强学习--DPPO
    深度增强学习--DDPG
    深度增强学习--A3C
    tomcat远程调试
    springboot问题记录
  • 原文地址:https://www.cnblogs.com/lin02/p/11480372.html
Copyright © 2011-2022 走看看