Struts2基本使用
Struts2:本质servlet
1、接受页面参数
a、使用原生的ServletAPI接受(不推荐) request.getParameter(name) 获取元素request方式: --HttpServletRequest request = ServletActionContext.getRequest(); 每个方法中都要获取 --通过实现接口:完成原生servlet对象的注入 public class BaseAction implements ServletRequestAware,ServletContextAware,ServletResponseAware{ protected HttpServletRequest request; protected HttpSession session = request.getSession(); protected ServletContext appliaction; protected HttpServletResponse response; @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } @Override public void setServletContext(ServletContext application) { this.appliaction = application; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } } b、在action类中提供私有Model对象(setter和getter方法),在jsp页面保证参数名称为:引用.属性 //接受页面参数 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } jsp: username:<input type="text" name="user.username"/><br> password:<input type="text" name="user.passwrod"/><br> birthday:<input type="text" name="user.birthday"/><br> salary:<input type="text" name="user.salary"/><br> 好处:直接将属性封装到对象中,自动类型转换(date--yyyy-MM-dd) 弊端:在jsp页面修改name属性名有可能会冲突($(input[name='username']);) c、实现ModelDriven接口,重写getModel方法(推荐) public class UserAction implements ModelDriven<User>{ private User user = new User(); @Override public User getModel() { return user; } }
2、调用业务逻辑(如何携带参数到目标)
第一种:
request.setAttribute(name,value)
request.getSession().setAttribute(name,value)
application.setAttribute(name,value)
第二种:
ActionContext.getContext().put(name,value):
ActionContext.getContext().getSession().put(name,value)
ActionContext.getContext().getApplicaton.put(name,value)
3、负责页面跳转
根据方法返回值结合配置页面的跳转: <result>:默认type="dispatcher" 转发页面 <result>:type="redirect" 重定向页面 <result>:type="redirectAction" 重定向到action <package name="user" namespace="/user" extends="struts-default"> <!-- http://localhost:8080/项目名/user/reg.action --> <action name="reg" class="com.bdyc.action.UserAction" method="reg"> <!-- 如果该方法的返回值是:regSuccess,就将地址转发到regSuccess.jsp --> <result name="regSuccess">/regSuccess.jsp</result> <!-- 重定向到regError.jsp --> <result name="regFail" type="redirect">/regError.jsp</result> </action> </package>
完成用户的CRUD+DBUtils