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


浙公网安备 33010602011771号