Struct2简单的应用

struts2入门精讲
虽然Struts 2提供了与Struts 1的兼容,但已经不是Struts 1的升级。对于已有Struts 1开发经验的开发者而言,Struts 1的开发经验对于Struts 2并没有太大的帮助;相反,对于已经有WebWork开发经验的开发者而言,WebWork的开发经验对Struts 2的开发将有很好的借鉴意义。

1.从用户请求开始<%@ page language="java" contentType="text/html; charset=GBK"%>

<html>

<head>

<title>登录页面</title>

</head>

<body>

<!-- 提交请求参数的表单 -->

<form action="Login.action" method="post">

                                  <table align="center">

                                  <caption><h3>用户登录</h3></caption>

                                  <tr>

                                        <!-- 用户名的表单域 -->

                                   <td>用户名:<input type="text" name="username"/></td>

                                  </tr>

                                  <tr>

                                        <!-- 密码的表单域 -->

                                   <td>密&nbsp;&nbsp;码:<input type="text" name="password"/></td>

                                  </tr>

                                  <tr align="center">

                                   <td colspan="2"><input type="submit" value="登录"/><input

                                            type="reset" value="重填" /></td>

                                  </tr>

                                  </table>

</form>

</body>

</html>

  注意:该表单的action属性:login.action,这个action属性比较特殊,它不是一个普通的Servlet,也不是一个动态JSP页面。当表单提交给login.action时,Struts 2的FilterDispatcher将自动起作用,将用户请求转发到对应的Struts 2 Action。
Struts 2 Action默认拦截所有后缀为.action的请求。



2.创建web应用

(1)在任意目录新建一个文件夹,笔者将以该文件夹建立一个Web应用。

(2) 在第1步所建的文件夹内建一个WEB-INF文件夹。

(3) 进入Tomcat,或任何Web容器内,找到任何一个Web应用,将Web应用的WEB-INF下的web.xml文件复制到第2步所建的WEB-INF文件夹下。

(4)修改复制的web.xml文件,将该文件修改成只有一个根元素的XML文件,修改后的web.xml文件代码如下:

<?xml version="1.0" encoding="GBK"?>

<!-- web-app是Web应用配置文件的根元素,指定Web应用的Schema信息 -->

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

                                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.

                                    com/xml/ns/j2ee/web-app_2_4.xsd">

</web-app>

(5) 在第2步所建的WEB-INF路径下,新建两个文件夹:classes和lib,它们分别用于保存单个*.class文件和JAR文件。

经过上面步骤,已经建立了一个空Web应用。将该Web应用复制到Tomcat的webapps路径下,该Web应用将可以自动部署在Tomcat中。
该Web将有如下文件结构:

Struts2qs

|-WEB-INF

|     |-classes

|     |-lib

|     |-web.xml

|-login.jsp


3.实现控制器类

Struts 2下的控制器不再像Struts 1下的控制器,需要继承一个Action父类,甚至可以无需实现任何接口,Struts 2的控制器就是一个普通的POJO。

public class LoginAction{
//下面是Action内用于封装的两个属性
private String username;
priavte String password;
//username属性对应的getter方法

                                  public String getUsername()

                                 {

                                  return username;

                                  }

                                 //username属性对应的setter方法

                                  public void setUsername(String username)

                                  {

                                  this.username = username;

                                  }

                                  //password属性对应的getter方法

                                  public String getPassword()

                                 {

                                  return password;

                                  }

                                 //password属性对应的setter方法

                                  public void setPassword(String password)

                                 {

                                  this.password = password;

                                  }

//处理用户请求的execute()方法
public String execute() throws Exception{
if(getUsername().equals("niu") && getPassword().equals("meng")){
return "success";
}else{
return "error";
}
}

}
  Struts 2的Action就是一个包含execute方法的普通Java类,该类里包含的多个属性用于封装用户的请求参数。

4.配置Action
上面定义了Struts 2的Action,但该Action还未配置在Web应用中,还不能处理用户请求。为了让该Action能处理用户请求,还需要将该Action配置在struts.xml文件中。

<?xml version="1.0" encoding="GBK"?>

<!-- 指定Struts 2配置文件的DTD信息 -->

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

<!-- struts是Struts 2配置文件的根元素 -->

<struts>

                                 <!-- Struts 2的Action必须放在指定的包空间下定义 -->

                                 <package name="strutsqs" extends="struts-default">

                                    <!-- 定义login的Action,该Action的实现类为lee.Action类 -->

                                  <action name="Login" class="lee.LoginAction">

                                        <!-- 定义处理结果和资源之间映射关系。 -->

                                   <result name="error">/error.jsp</result>

                                   <result name="success">/welcome.jsp</result>       

                                  </action>

                                  </package>

</struts>

注:该Action将负责处理向login.action URL请求的客户端请求。该Action将调用自身的execute方法处理用户请求,如果execute方法返回success字符串,请求将被转发到/welcome.jsp页面;如果execute方法返回error字符串,则请求被转发到/error.jsp页面。

5.增加视图资源完成的应用

两个JSP文件分别是error.jsp页面和welcome.jsp页面,将这两个JSP页面文件放在Web应用的根路径下(与WEB-INF在同一个文件夹下)。
<%@ page language="java" contentType="text/html; charset=GBK"%>

<html>

    <head>

        <title>成功页面</title>

    </head>

    <body>

        您已经登录!

    </body>

</html>

  总结:这是一个简单的流程用户输入两个参数,即username和password,然后向login.action发送请求,该请求被FilterDispatcher转发给LoginAction处理,如果LoginAction处理用户请求返回success字符串,则返回给用户welcome.jsp页面;如果返回error字符串,则返回给用户error.jsp页面。

猜你喜欢

转载自n-meng.iteye.com/blog/1045777