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



原文地址:https://www.cnblogs.com/acmwangpeng/p/5942973.html