zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    xampp+vscode开发php的配置流程
    如何开始学习以太坊及区块链
    java动态生成带下拉框的Excel导入模板
    汉字转拼音
    Git+Gradle+Eclipse构建项目
    test
    MacOS这idea快捷键
    HashMap扩容全过程
    NIO理解
    详解MySQL 内连接、外连接、左连接、右连接
  • 原文地址:https://www.cnblogs.com/acmwangpeng/p/5942973.html
Copyright © 2011-2022 走看看