• Struts10分钟入门


     Struts2应用

    Struts的jar包:struts2-core-xxx.jar

    xwork-core-xxx.jar

    ognl-xxx.jar:Struts2使用的一种表达式。

      <dependency>
          <groupId>org.apache.struts</groupId>
          <artifactId>struts2-core</artifactId>
          <version>2.3.14</version>
        </dependency>
        <dependency>
          <groupId>org.apache.struts.xwork</groupId>
          <artifactId>xwork-core</artifactId>
          <version>2.3.4.1</version>
        </dependency>

    第一个简单例子:

    public class LoginActtion implements Action {  //实现Action接口
    
        private String uname;
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        private String message;
    
        public String getUname() {
            return uname;
        }
    
        public void setUname(String uname) {
            this.uname = uname;
        }
        public String execute() throws Exception { 
            this.setMessage("Hello!"+getUname());
            return "success";
        }
    }

    Action:接口常量字符串含义

    success:标识程序正常,返回用户结果。

    none:表示处理正常结束,但不反回给用户。

    error:表示处理结果失败。

    input:表示需要更多用户输入才能顺利进行。

    login:表示需要用户正确登陆后才能顺利进行。

    配置文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
            "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <!-- 配置文件中只要添加以下配置,那么以后修改配置文件不用重启tomcat -->
        <constant name="struts.devMode" value="true" />
    
        <package name="default" namespace="/" extends="struts-default">
            <!-- 第一个action的例子 -->
          <!--  <action name="Hello" class="cn.wwy.action.LoginActtion">
                <result name="success">
                    Login.jsp
                </result>
            </action>-->
            <action name="FilOne" class="cn.wwy.action.FileOne">
             <result name="successone">MapInfo.jsp</result>
                <result name="input">MapInfo.jsp</result>
            </action>
            <!-- 登陆的action -->
        </package>
        <!-- Add packages here -->
    </struts>

    Jsp页面

    <body>
    <div>
        <h1>
            <s:property value="message"></s:property>
        </h1>
    </div>
    <form action="Hello" method="post">
        <input name="uname" type="text">
        <input type="submit" value="提交">
    </form>
    </body>

    wep.xml:

     <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>Login.jsp</welcome-file>
        </welcome-file-list>

    //用Servlet API 解耦的访问方式

        private User user;
    
        public String execute() throws Exception {
            System.out.println(user.getUname()+"=============================");
            if (user.getUname().equals("wwy") && user.getPwd().equals("123")) {
                Map<String, Object> session = ActionContext.getContext().getSession();
                session.put("uname", user.getUname());
                return "successone";
            }else {
                return "";
            }
        }

    做校验:

    public class FileOne extends ActionSupport implements Action{
        @Override
        public void validate() {
            if(user.getUname().equals("")){
                addFieldError("uname","姓名不能为空");
            }else if(user.getPwd().equals("")){
                addFieldError("pwd","密码不能为空");
            }
    
        }
    <form action="FilOne" method="post">
        <input type="text" name="user.uname">
        <input type="text" name="user.pwd">
        <input type="submit" value="登陆">
    
        <s:fielderror name="uname"></s:fielderror>
        <s:debug></s:debug>
        <s:fielderror name="pwd"></s:fielderror>
    </form>

    常用的校验标签:

    <s:form></s:from> 获取form的值

    <s:textfield></s:textfield> 文本输入框

    <s:password></s:password> 密码输入框
    <s:textarea></s:textarea>文本域输入框
    <s:radio></s:radio> 单选按钮
    <s:checkbox></s:checkbox>复选框
    <s:submit></s:submit>提交标签
    <s:reset></s:reset> 重置标签
    <s:hidden></s:hidden>隐藏域标签

    Struts 2访问Servlet API

      servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢?

        解析:将用户名放入session 两种方案

    1. Servlet API解耦的访问方式

        --->01.使用ActionContext类获取ServletAPI对象对应的Map对象

        --->02.Struts2Action注入ServletAPI对象对应的Map对象

    2. Servlet API耦合的访问方式

    解耦方式:

    方案一: Servlet API进行封装   ,借助ActionContext

    提供了三个Map对象访问requestsessionapplication作用域

    通过ActionContext类获取这三个Map对象

    Object get("request")

    Map getSession()

    Map getApplication()

    耦合是指紧密结合的意思。简单的理解,如果你使用了或者继承了j2ee的部分,那么你的代码在非j2ee环境就不能使用。你使用了struts2的包和类,那么你的代码在spring mvc中就不可用。

    而解耦就是把代码的关键逻辑脱离耦合,也就是这一部分代码可以脱离struts2使用。当然不可能全部解耦,例如和画面相关的部分不可能解耦。但是核心逻辑脱离是很简单的。

  • 相关阅读:
    go 自定义RWMutex
    go defer的*i和i参数
    go defer 易错题
    EasyPlayer移动端播放webrtc协议时长按播放页面无法关闭“关于我们”页面
    高速公路服务区智能一体机解决方案
    【操作教程】TSINGSEE青犀视频平台如何将旧数据库导入到新数据库?
    EasyPlayer流媒体播放器播放HLS视频,起播速度慢的技术优化
    开发那些事儿:如何在CentOS7下安装部署ffmpeg?
    开发那些事儿:前端开发环境报错“[vuex]unknown action type”如何解决?
    H.264转码H.265出现崩溃并报错“missing picture”该如何解决?
  • 原文地址:https://www.cnblogs.com/xiaoyu1997/p/6479669.html
Copyright © 2020-2023  润新知