网易云歌单

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;
        }
    }
}

  页面进行取值:

 

posted @ 2018-01-05 21:57  给我唆一口  阅读(141)  评论(0编辑  收藏  举报