Struts2学习(1)

搭建Struts2开发环境步骤

  1. 创建JavaWeb工程
  2. 导入Struts2所需要的jar包
  3. 创建jsp文件
  4. 创建action文件(就是新建一个类,继承父类ActionSupport)
  5. 编写Struts2的配置文件
  6. 在web.xml中加入Struts2 mvc 框架启动配置
    以上是搭建Struts2开发环境的步骤,使用MyEclipse一般会省去步骤6,创建项目时会自动帮我们搭建好。

Struts2执行过程如下:
这里写图片描述

接下来通过一个例子帮助理解

先创建一个Action类,代码如下:

package se1414080902225;
import com.opensymphony.xwork2.ActionSupport;
public class CheckLogin extends ActionSupport {
    private String account;
    private String password;
    public String getAccount() 
    {
        return account;
    }
    public void setAccount(String account) 
    {
        this.account = account;
    }
    public String getPassword() 
    {
        return password;
    }
    public void setPassword(String password) 
    {
        this.password = password;
    }
    public String execute() 
    {
        String message=null;
        if (!account.equals("")&&!password.equals("")) 
        {
            message="成功登录";
        }
        else
        {
            message="登录失败";
        }
        return message;
    }
    public CheckLogin() {}
}

创建一个login.jsp页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <style type="text/css">
        #div1{
            background:#666;
            margin:10% 10% 10% 10%;
            padding:5% 5% 5% 5%;
        }   
        body{
            background:#444;
        }
    </style>
  </head>
  <body>
    <div id="div1">
        <form action="login.go" method="post">
            <input type="text" name="account"/><br/><br/>
            <input type="password" name="password"/><br/><br/>
            <input type="submit" name="登录"/><br/>
        </form>
    </div>

  </body>
</html>

接下来就是往struts.xml配置文件添加元素

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <!--配置struts2框架的请求action的后缀名,如果配置多个的话用","隔开-->
    <constant name="struts.action.extension" value="do,go,"></constant>

    <!--package表示包,action标签的所有配置放在包下,属性name表示包的名称,要求唯一,可被继承-->
    <!--namespace属性表示命名空间,名字也需要唯一;extends属性表示继承其它配置文件-->
    <package name="se1414080902225" extends="struts-default">
        <action name="login" class="se1414080902225.CheckLogin">
            <result name="成功登录" type="redirect">/success.jsp</result>
            <result name="登录失败">/login.jsp</result>
        </action>
    </package>
</struts>    

在struts标签内加入如下代码可以修改请求action的后缀名

<!--配置struts2框架的请求action的后缀名,如果配置多个的话用","隔开-->
    <constant name="struts.action.extension" value="do,go,,"></constant>

value=”do,go,,”的作用在于定义访问action的方式应该为actionName.do或者actionName.go.

action访问的路径问题:

上面那个action的name属性为”login”,package中的 namespace 属性省略不写,访问Action的相对路径为”/login.go”.

如果在package标签里加上namespace属性,修改后代码如下:

<package name="se1414080902225" extends="struts-default" namespace="/hello">
        <action name="login" class="se1414080902225.CheckLogin">
            <result name="成功登录" type="redirect">/success.jsp</result>
            <result name="登录失败">/login.jsp</result>
        </action>
    </package>

这时Action的访问路径就为“/hello/login.go”

接下来看一下execute( )方法,该方法返回一个字符串,在此本人建议字符串不要太长太复杂,最好是常量。

public String execute() 
    {
        String message=null;
        if (!account.equals("")&&!password.equals("")) 
        {
            message="成功登录";
        }
        else
        {
            message="登录失败";
        }
        return message;
    }
<action name="login" class="se1414080902225.CheckLogin">
            <result name="成功登录" type="redirect">/success.jsp</result>
            <result name="登录失败">/login.jsp</result>
        </action>

下面要说的就是execute( )方法的返回值与result标签”name”属性间的关系:

message的值要与result标签里的name属性的值保持一致,如果返回的值是可变化的,
execute()方法返回结果有多少中可能,action标签下就会有多少个result标签与之对应,
如果返回结果与任何一个name属性值都不匹配,就会出现404 not Found的错误

result标签的属性type=”redirect”表示对页面进行重定向,如果不写type=”redirect”则默认进行的是转发请求。一般为转发请求。

在没有为action的class属性指定类时,struts2默认执行的action是
com.opensymphony.xwork2.ActionSupport类的execute()方法,
可以在struts-default.xml文件中找到没有指明class属性时的默认配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值