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使用。当然不可能全部解耦,例如和画面相关的部分不可能解耦。但是核心逻辑脱离是很简单的。

posted @ 2017-02-28 16:56  时间&amp;煮雨  阅读(142)  评论(0编辑  收藏  举报