Struts2 的环境搭建

来源:互联网 发布:多媒体软件的优缺点 编辑:程序博客网 时间:2024/05/22 16:43

Struts2 的环境搭建

一、环境搭建

1.环境搭建步骤整体是分三步:

    <1>导入框架组件及开发jar 包

    <2>在动态WEB 工程下配置Struts2 的拦截器

    <3>新建struts.xml 配置文件及创建相关Action 类

2.开发平台

    <1>此处使用的是Myeclipse2014,其他支持Java EE 等开发环境也可以。

    <2>配置Tomcat6.0,此处使用tomcat 版本较低,推荐使用更高版本或最新版本的。(tomcat7,tomcat8,tomcat9)

二、Struts2 项目

1.第一个项目HelloWorld

    说明:以下相关包、类、文件等命名自定义

2.新建动态WEB 工程命名为Struts2Project

    <1>导入Struts2 框架所需相关jar 包,点此下载


图2-2-1.Struts2-jar 包图

3.配置WEB 工程配置文件web.xml,注册映射Struts2 的过滤器

    代码如下:

[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”   
  3.         xmlns=“http://java.sun.com/xml/ns/javaee”   
  4.         xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd” id=“WebApp_ID”   
  5.         version=“3.0”>  
  6.     <!– 配置Struts2 的Filter –>  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  10.     </filter>  
  11.   
  12.     <filter-mapping>  
  13.         <filter-name>struts2</filter-name>  
  14.         <url-pattern>/*</url-pattern>  
  15.     </filter-mapping>  
  16.       
  17. </web-app>  
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"         version="3.0">    <!-- 配置Struts2 的Filter -->    <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></web-app>

    说明:filter-mapping 子节点url-pattern 的参数为/*, 使用通配符表示当前WEB 工程下的所有文件被访问都要通过struts2 映射的过滤器即filter 子节点filter-class 所指向的过滤器类。

4.创建Action 类并配置struts.xml 

    <1>.创建Action 类:User.Java 

    在src 下新建包cn.edu.hpu.action,并创建Action 类命名为User。

    在User.java 中创建私有属性及对应的setter() 与getter() 方法。

    创建一个自定义方法login(),用来模拟用户登陆功能。

    (说明:Struts2 下Action 类中有默认方法名为execute(),不自定义方法应该使用execute() 方法 )

    代码如下:

[java] view plain copy
print?在CODE上查看代码片派生到我的代码片
  1. package cn.edu.hpu.action;  
  2.   
  3. public class User {  
  4.     private String username;  
  5.     private String password;  
  6.     public String getUsername() {  
  7.         return username;  
  8.     }  
  9.     public String getPassword() {  
  10.         return password;  
  11.     }  
  12.     public void setUsername(String username) {  
  13.         this.username = username;  
  14.     }  
  15.     public void setPassword(String password) {  
  16.         this.password = password;  
  17.     }  
  18.     /** 
  19.      *  登录方法 
  20.      *      若页面请求参数为zhangsan 123456 则用户数据验证成功 
  21.      *      进行相应的逻辑操作,方法返回值对应配置文件中节点result 的name 属性,进入到对应的响应页面 
  22.      *      <result name=”success”>success.jsp</result> 
  23.      *      <result name=”error”>error.jsp</result> 
  24.      * @return 
  25.      */  
  26.     public String login(){  
  27.         if (username.equals(“zhangsan”) && password.equals(“123456”)) {  
  28.             return “success”;  
  29.         }  
  30.         return “error”;  
  31.     }  
  32. }  
package cn.edu.hpu.action;public class User {    private String username;    private String password;    public String getUsername() {        return username;    }    public String getPassword() {        return password;    }    public void setUsername(String username) {        this.username = username;    }    public void setPassword(String password) {        this.password = password;    }    /**     *  登录方法     *      若页面请求参数为zhangsan 123456 则用户数据验证成功     *      进行相应的逻辑操作,方法返回值对应配置文件中节点result 的name 属性,进入到对应的响应页面     *      <result name="success">success.jsp</result>     *      <result name="error">error.jsp</result>     * @return     */    public String login(){        if (username.equals("zhangsan") && password.equals("123456")) {            return "success";        }        return "error";    }}
    注意:Action 类中的方法以及方法返回值是与struts.xml 文件中的配置对应的。
    <2>配置struts.xml 

    (1)上面创建的类User.java 当前还是一个普通的model 类,通过在struts.xml 中配置此类就能让struts2 来管理了,被struts2 管理的model 类是Action 类。

    (2)创建Struts2 配置文件struts.xml 并进行配置

    配置如下:

[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     ”-//Apache Software Foundation//DTD Struts Configuration 2.3//EN”  
  4.     “http://struts.apache.org/dtds/struts-2.3.dtd”>  
  5.       
  6. <struts>  
  7.   
  8.     <package name=“default” extends=“struts-default” >  
  9.         <!– 注意:class参数 –>  
  10.         <action name=“user-login” class=“cn.edu.hpu.action.User” method=“login”>  
  11.             <result name=“success”>success.jsp</result>  
  12.             <result name=“error”>error.jsp</result>  
  13.         </action>  
  14.     </package>  
  15.       
  16. </struts>  
<?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>    <package name="default" extends="struts-default" >        <!-- 注意:class参数 -->        <action name="user-login" class="cn.edu.hpu.action.User" method="login">            <result name="success">success.jsp</result>            <result name="error">error.jsp</result>        </action>    </package></struts>

    (3)struts.xml 节点说明:

    struts.xml 文件中仅有一个struts 节点,该节点下可有多个package 节点,package 节点下可有多个action 节点

      1>package 需要继承struts-default,name 属性值自定义。

      2>action 

        – name 

    name属性值对应来自界面的或控制层请求转发、重定向等请求方法的方法名。

例如:

    请求方法为user-login ,此处name 值也为user-login 则此action 将会受理该方法对应的请求。

        – class 

    class属性配置普通的model 类,注意是全类名,配置后该类即为Struts2 的Action 类。

        – method 

    method属性默认值为execute。(method=”execute” )

    如果action 节点不配置method 就默认使用execute 方法。该方法存在于class 属性对应的Action 类中。

      <action name=”user-login” class=”cn.edu.hpu.action.User”>

    此处自定义方法为login 则需配置属性method = “login” ,(此方法对应Action 类中的自定义方法。)

      <action name=”user-login” class=”cn.edu.hpu.action.User” method=”login”>

      3>result

    该节点下有name 属性,默认值为success。(name=”success” )

    若不配置name 属性时,则默认存在name = “success”;其中默认方法public String execute()  的返回值是success。

例如:

    此处Action 类中自定义方法public String login() 返回值为error 或success。

    (4)Struts2 的HelloWorld整个执行过程:

    首先页面传来请求,然后根据请求方法与action 节点下的name 比对找到对应的action;

    执行此action 配置的类中的特定方法;

    (类为action 下的class 指向,方法名为action 的method 属性值)。

    根据方法的返回值匹配action 子节点result 的name 属性值,执行相关逻辑操作

例如:

      <action name=”user-login” class=”cn.edu.hpu.action.User” method=”login”>

    此处即受理请求user-login ,执行User 中的login 方法。根据login 方法逻辑处理后的返回值与result 比对进行下一步逻辑处理。

三、测试运行HelloWorld 

1.为测试Struts2 环境是否配置完全。可测试刚才配置的方法user-login 。即模拟账户登录功能。

2.新建login.jsp 登录界面

    代码如下:

[html] view plain copy
print?在CODE上查看代码片派生到我的代码片
  1. <%@ page language=“java” contentType=“text/html; charset=UTF-8”  
  2.     pageEncoding=“UTF-8”%>  
  3. <!– 引入struts 标签库 –>  
  4. <%@ taglib prefix=“s” uri=“/struts-tags” %>  
  5. <!DOCTYPE html PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>  
  6. <html>  
  7. <head>  
  8. <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>  
  9. <title>Insert title here</title>  
  10. </head>  
  11. <body>  
  12.     <center>  
  13.         <h4>登录信息表单</h4><br/>  
  14.         <s:form action=“user-login” method=“post”>  
  15.             <s:textfield name=“username” label=“账户”/>  
  16.             <s:password name=“password” label=“密码”/>  
  17.             <s:submit/>  
  18.         </s:form>  
  19.     </center>  
  20. </body>  
  21. </html>  
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!-- 引入struts 标签库 --><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>    <center>        <h4>登录信息表单</h4><br/>        <s:form action="user-login" method="post">            <s:textfield name="username" label="账户"/>            <s:password name="password" label="密码"/>            <s:submit/>        </s:form>    </center></body></html>
    页面只有一个表单,运行项目,进入该页面,写入数据后点击提交按钮,通过Struts 环境逻辑处理响应相应的结果。

3.创建jsp 文件success.jsp 和 error.jsp,就是显示登录成功或失败的页面。


图3-3-1.项目整体结构图

4.在tomcat 下运行该工程Struts2Project

    <1>过程描述:

    通过浏览器访问login.jsp,在此页面填写zhangsan、123456 后点击提交按钮,发送请求到user-login ,struts2 对WEB 应用下所有访问进行拦截过滤,通过请求方法user-login 比对,相应的action 受理该请求,并执行Action 类User.java 的login 方法,在此方法中比对页面传来的请求参数username、password,比对成功login() 方法返回值为success,action 节点的子节点result 的name 属性值匹配返回值,进入相应的逻辑处理;返回值为success 则进入success.jsp 页面提示登录成功,error 则进入error.jsp 提示登录失败!

    <2>运行效果如下:


图3-4-1.正确信息图


图3-4-2.登录成功图


图3-4-3.错误信息图


图3-4-4.登录失败图
0 0
原创粉丝点击