谈谈自己对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; } } }
页面进行取值: