• 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



  • 相关阅读:
    大型项目使用Automake/Autoconf完成编译配置
    用C语言编写Windows服务程序的五个步骤
    RPC的发展历史(本质就是双方定义好协议,传递参数后远程调用)
    libuv和libev 异步I/O库的比较
    zlog 程序日志的库 交叉编译(Linux生成ARM库,观察执行步骤)
    应用服务
    EvnetBus
    this指向
    CPU使用率
    数据量小,创建索引有必要吗
  • 原文地址:https://www.cnblogs.com/acmwangpeng/p/5942973.html
Copyright © 2020-2023  润新知