zoukankan      html  css  js  c++  java
  • struts 2入门二

    谈谈自己对sruts的一个请求流程走向图

    当一个请求过来时

    首先经过web.xml中的StrutsPrepareAndExecuteFilter这个拦截器

    又进过一些拦截器

    找到了action

    根据action给的字符

    找到对应的视图

    获取Servlet API对象的方法

     //获取httpsession的Map对象 用法都差不多
            ActionContext context = ActionContext.getContext();
            Map<String, Object> session = context.getSession();
            //获取ServletContext的Map对象
            Map<String, Object> application = context.getApplication();
            //获取request
            Map request = (Map) context.get("request");
    

    Struts 2数据校验

    他不在选择Action接口,而选择它得一个实现类ActionSupport

    重写validate()方法

    package cn.baby.action;
    
    import cn.baby.entity.User;
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * 数据校验
     * Created by Administrator on 2018/1/5.
     */
    public class LoginAction extends ActionSupport {
        //用户实体
        private User user;
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
        //这方法会自动跳转input视图
        @Override
        public void validate() {
            if (user.getName()==null || user.getName().length()==0){
                addFieldError("name","用户名不能为空");
            }
            if (user.getPass()==null || user.getPass().length()==0){
                addFieldError("pwd","密码不能为空");
            }
        }
    }
    

      

     </action>
            <action name="login" class="cn.baby.action.LoginAction">
                <result name="input">
                    /login.jsp
                </result>
                <!-- 显示成功的jsp页面 -->
                <result name="success">
                    /index.jsp
                </result>
            </action>
    <%--使用UI标签--%>
    <div>
        <s:fielderror/>//输出效验信息
    </div>
    <s:form action="login.action">
        <div>
            用户名:<s:textfield name="user.name"></s:textfield>
        </div>
        <div>
            密码:<s:password name="user.pass"></s:password>
        </div>
        <div>
            <s:submit value="登入"/>
        </div>
    </s:form>

    页面效果

    iterator迭代标签的用法

    package cn.baby.action;
    
    
            import cn.baby.entity.User;
            import com.opensymphony.xwork2.Action;
            import com.opensymphony.xwork2.ActionContext;
    
            import java.util.ArrayList;
            import java.util.List;
            import java.util.Map;
    
    /**
     * Created by Administrator on 2018/1/4.
     */
    public class HelloAction implements Action {
        //向用户显示的信息
        private String message="";
        //用户实体
        private User user;
        //list
        private List<String> list;
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public List<String> getList() {
            return list;
        }
    
        public void setList(List<String> list) {
            this.list = list;
        }
    
        public String execute() throws Exception {
            //获取httpsession的Map对象 用法都差不多
            ActionContext context = ActionContext.getContext();
            Map<String, Object> session = context.getSession();
            //获取ServletContext的Map对象
            Map<String, Object> application = context.getApplication();
            //获取request
            Map request = (Map) context.get("request");
            list=new ArrayList<String>();
            list.add("我");
            list.add("爱");
            list.add("刘");
            list.add("志");
            list.add("威");
            if ("威哥".equals(user.getName()) && "2018".equals(user.getPass())){
                this.setMessage("Hello,"+user.getName()+"!");
                return SUCCESS;
            }else {
                return ERROR;
            }
        }
    }
    

      页面进行取值:

  • 相关阅读:
    使用Fiddler抓包(手机端app)
    IE浏览器跳转url正常,谷歌浏览器跳转报403状态
    书签
    工作记录
    MySQL索引、锁和优化
    Pytorch-张量的创建与使用方法
    网络请求
    数据挖掘的五大流程
    uni开启下拉刷新
    uni-app中的tabBar配置
  • 原文地址:https://www.cnblogs.com/liuzhiw/p/8207005.html
Copyright © 2011-2022 走看看