Struts 2之HelloWorld(上)

. 下载和安装 DWR 的步骤 :

     登录 http://struts.apache.org/download.cgi#Struts206 站点 , 下载 Struts2 最新的版本 .

将下载到的 Zip 文件解压缩 , 该文件就是一个典型的 web 结构 , 该文件包含以下文件结构 :

apps: 该文件夹下面包含了基于 Struts 2 的示例应用 , 这些示例应用对于学习者是非常用用的资料 .

docs: 该文件夹下面包含了 Struts2 的相关文档 , 包括 Struts 2 的快速入门 ,Struts 2 的文档 , 以及 API 文档等内容 .

lib: 该文件夹下面包含了 Struts2 框架的核心类库 , 以及 Struts2 的第三方插件类库 .

src: 该文件夹下面包含了 Struts 框架的全部代码 .

     lib 文件夹下面的必要类库复制到 web 应用的 WEB-INF/lib 路径下 , 不需要将所有的 Struts 的全部 jar 包都放到 lib 路径下面 , 将几个核心的 jar 包放到该路径下就可以了 . 在这里 , 用到的可以是 :commons-logging-1.0.4.jar,commons-fileupload-1.2.1.jar,free
marker-2.3.13.jar,ognl-2.6.11.jar,struts2-core-2.0.8.jar,xwork-2.1.2.jar.
这里如果需要在 DOS 或者是在 shell 窗口下面手工编译 Struts2 的相关的程序 , 则还应该将 Struts-core-2.0.8.jar xwor-2.0.1.jar 添加到系统的 CLASSPATH 环境变量中 .

     编辑 Web 应用的 web.xml 配置文件 , 配置 Struts2 的核心 Filter, 下面是增加了 Struts2 的核心 Filter 配置的 web.xml 配置文件的代码 :

  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < web-app   version = "2.4"    
  3.     xmlns = "http://java.sun.com/xml/ns/j2ee"    
  4.     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"    
  5.     xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee   
  6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">   
  7.     <!-- 在该文件中加入struts2的文件内容 -->   
  8.     < filter >   
  9.         < filter-name > Struts2 </ filter-name >   
  10.         < filter-class > org.apache.struts2.dispatcher.FilterDispatcher </ filter-class >   
  11.     </ filter >   
  12.     <!-- FilterDispatcher用来初始化Struts2并且处理所有的请求 -->   
  13.     < filter-mapping >   
  14.         < filter-name > Struts2 </ filter-name >   
  15.         < url-pattern > /* </ url-pattern >   
  16.     </ filter-mapping >   
  17. </ web-app >   

经过上面三个步骤 , 我们就可以再一个 Web 应用中使用 Struts2 的基本内容了 .

. 从用户请求开始

Struts2 支持大部分视图技术 , 当然也支持传统的 JSP 视图技术 . helloworld 应用将使用最基本的视图技术 :JSP 技术 . 当用户需要登录本系统的时候 , 用户需要一个简单的表单提交页面 , 这个表单提交页面包含了两个表单域 , 用户名和密码 , 下面的代码是一个最简单的表单提交页面 , 仅仅包含有两个表单域 , 甚至没有任何的动态内容 . 实际上 , 整个页面完全可以是一个静态的 HTML 页面 , 但是考虑到需要在该页面的后面增加动态的内容 , 因此依然将该页面用 JSP 为后缀保存 , 下面是用户请求登录的 JSP 页面的代码

  1. < %@ page  language = "java"   import = "java.util.*"   pageEncoding = "utf-8" % >   
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
  4. < html >   
  5.   < head >   
  6.   < title > struts2的Helloworld </ title >   
  7.   </ head >   
  8.     
  9.     
  10.   < body >   
  11.      < form   action = "login.action"   method = "get" >   
  12.          < table   align = "center" >   
  13.          < caption > < h3 > 用户登录 </ h3 > </ caption >   
  14.          < tr >   
  15.              <!-- 用户的表单域 -->   
  16.              < td > 用户名: < input   type = "text"   name = "username" /> </ td >   
  17.          </ tr >   
  18.          < tr >   
  19.              <!-- 用户的表单域 -->   
  20.              < td > 密  码: < input   type = "text"   name = "password" /> </ td >   
  21.          </ tr >   
  22.          < tr   align = "center" >   
  23.              < td   colspan = "2" >   
  24.                  < input   type = "submit"   value = "提交" />   
  25.                  < input   type = "reset"   value = "重置" />   
  26.              </ td >   
  27.          </ tr >   
  28.          </ table >       
  29.      </ form >   
  30.   </ body >   
  31. </ html >   

正如前面介绍的 , 该页面没有任何的动态的内容 , 完全是一个静态的 HTML 页面 , 但是 , 我们注意到该表单的 action 属性 :login.action. 这个 action 属性比较特殊 , 它不是一个普通的 Servlet, 也不是一个动态的 JSP 页面 . 当表单提交给 login.action 的时候 ,Struts2 FilterDispatcher 将自动起作用 , 将用户请求转发到相应的 Struts2 Action.(Struts2 Action 默认拦截所有后缀为 .action 的请求 , 因此 , 如果我们需要将某个表单提交给 Struts2 Action 处理 , 则应该将该表单的 action 属性设置为 *.action 的格式 ).

整个页面就是一个标准的 HTML 页面 , 整个单独的页面还没有任何与用户交互的能力 . 下面 , 我们就开始手工的创建一个 Struts2 Web 应用 .

, 创建 Struts2 Web 应用

 

Struts2 Web 应用就是一个普通的 Web 应用 , 然后增加 Struts2 的功能 , 该应用就可以充分利用 Struts2 MVC 框架了 .

(1)     创建 WEB 应用

 

手工的创建一个 Struts2 应用 , 建立一个 Web 应用请按照如下步骤进行 :

     在任何的目录中新建一个文件夹 , 使用这个文件夹建立一个 web 应用 , 名字一定要使用英文 .

     在第一步建立好的文件夹中新建一个名字为 ”WEB-INF” 的文件夹 .

     进入 Tomcat, 或者任何的其他的 WEB 容器当中 , 找到任何一个 WEB 应用 , WEB-INF 下面的 web.xml 文件复制到第二步所创建的 WEB-INF 文件夹下面 .

     修改复制的 web.xml 文件 , 将该文件修改成只有一个根元素的 xml 文件 , 修改之后的 web.xml 文件代码如下 ://TODO

     在第二步所建的 WEB-INF 路径下 , 新建两个文件夹 ,classes lib, 它们分别用于保存单个的 .class 文件和 Jar 文件 .

经过了上面的步骤 , 我们已经建立了一个空的 WEB 应用 , 这个时候 , 我们就可以将这个建立好的 web 应用复制到 Tomcat webapps 路径下面了 , 这个 WEB 应用将可以自动的部署到 tomcat 当中 .

将定义好的 JSP 页面 ( 就是上面有两个输入框 , 用户名和密码的那个 ) 复制到第一步所建立的文件夹下面 , JSP 页面将成为该 WEB 应用的一个页面 . web 将有如下的文件结构 :

Struts2qs

|-WEB-INF

|      |-classes

|      |-lib

|      |-web.xml

|-login.jsp

上面的 Struts2qs Web 应用所对应的文件夹的名字 , 可以进行更改 ,login.jsp 是该 web 应用下 JSP 的名字 , 也可以修改 , 其他文件夹 , 配置文件都不可以更改 .( 这个地方有点出入 , 我们可以在 web.xml 文件中加入一个标签 welcom-file-list), 然后启动 Tomcat, 在浏览器中输入 http://localhost:8080/struts2/ 可以看到定义好的页面 .

(2)     增加 Struts2 功能

 

为了给 web 应用增加 Struts2 的功能 , 只需要将 Struts2 安装到 web 应用中就可以了 , web 应用中安装 struts2 框架核心 , 只需要经过以下三个步骤 :

     修改 web.xml 文件 , web.xml 文件中配置 Struts2 的核心 Filter

     Struts2 框架的类库复制到 web 应用的 WEB-INF/lib 路径下

     WEB-INF/classes 下面增加 struts.xml 文件 .( Eclipse 环境下面是要放到 src 文件夹下面的 , 这样 eclipse 进行部署的时候 , 就会自动的将 struts.xml 刷到 tomcat classes 文件夹下面去 . 放到别的地方会报错的 )

下面是增加了 Struts2 功能之后的 web 应用的文件结构 :

Struts2qs

|-WEB-INF

|      |-classes(struts.xml)

|      |-lib( 上面列出的 Struts2 运行时候需要的 jar )

|      |-web.xml

|-login.jsp

这里需要指出的是 ,Struts2 web 应用默认需要 java 5 运行环境 , 需要 web 容器支持 ServletAPI2.4 JSP API2.0, 如果需要使用更低版本的 java 运行时环境 , 则需要使用 struts2 框架的 jdk 1.4 支持 , 为了简单起见 , 建议使用 java5 运行时环境 , 使用 Tomcat5.5 或者更高的版本 .

. 实现控制器

 

(1) 实现控制器类

 

Struts2 下面的控制器不再像 Struts1 下面的控制器 , 需要继承一个 Action 父类 , 甚至可以无需实现任何接口 ,struts2 的控制器就是一个普通的 pojo.

实际上 Struts2 Action 就是一个包含有 execute 方法的普通的 java . 该类里面包含的多个属性用于封装用户的请求参数 , 下面是处理用户请求的 Action 类的代码 :

  1. package  com.supermos.app;  
  2.   
  3. public   class  LoginAction {  
  4.     private  String username;  
  5.     private  String password;  
  6.     public  String getUsername() {  
  7.         return  username;  
  8.     }  
  9.     public   void  setUsername(String username) {  
  10.         this .username = username;  
  11.     }  
  12.     public  String getPassword() {  
  13.         return  password;  
  14.     }  
  15.     public   void  setPassword(String password) {  
  16.         this .password = password;  
  17.     }  
  18.     public  String execute() throws  Exception{  
  19.         if ( "supermos" .equalsIgnoreCase(username)&& "ziwen" .equalsIgnoreCase(password)){  
  20.             return   "success" ;  
  21.         }else {  
  22.             return   "fail" ;  
  23.         }  
  24.     }  
  25. }  

上面的 Action 类是一个在普通不过的 java , 该类里面定义了两个属性 ,username password, 并且为这两个属性提供了对应的 getter setter 方法 , 除此之外 , Action 类里还包含了一个没有参数的 execute 方法 , 这个大概也就是 struts2 Action pojo 唯一的区别 . 实际上 , 这个 execute 方法仍旧是一个非常普通的方法 , 既没有与 ServletApi 耦合 , 也没有与 Struts2 Api 耦合 .

表面上看起来 , Action 的两个属性只是提供了对应的 getter setter 方法 , 很难理解请求参数在什么时候复制给该 Action 属性 , 事实上 , 因为 Struts2 的拦截器机制 , 它们负责解析用户的请求参数 , 并将请求参数赋值给 Action 对应的属性 .

(2) 配置 Action

上面定义了 Struts2 Action, 但是该 Action 还没有配置到 Web 应用当中 , 还不能够处理用户的请求 , 为了能让该 Action 能够处理用户的请求 , 还需要将该 action 配置到 struts.xml 文件当中 .

前面已经介绍过了 ,struts.xml 文件应该放置到 classes 路径下面 , 该文件主要防止 Struts2 Action 定义 . 在定义 Struts2Action 的时候 , 除了需要制定该 action 的实现类之外 , 还需要定义 ACTION 处理结果和资源之间的映射关系 , 下面是该应用的 struts.xml 文件的代码 :

  1. <? xml   version = "1.0"   encoding = "utf-8" ?>   
  2.    <!DOCTYPE struts PUBLIC  
  3.       "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
  4.       "http://struts.apache.org/dtds/struts-2.1.dtd">   
  5. < struts >   
  6.       < package   name = "strutsqs"   extends = "struts-default" >   
  7.           < action   name = "login"   class = "com.supermos.app.LoginAction" >   
  8.              < result   name = "success" > /success.jsp </ result >   
  9.              < result   name = "fail" > /fail.jsp </ result >   
  10.           </ action >   
  11.       </ package >   
  12. </ struts >   

上面的映射文件定义了 name login Action.

(3) 增加视图资源完成应用

 

经过上面的两个步骤 , 这个最简单的 struts2 应用几乎可以运行了 , 但是还需要为该 web 应用增加两个 jsp 文件 , 分别是 error.jsp welcome.jsp, 将这两个 jsp 页面文件放到 web 应用的根目录下 ( /WEB-INF 在同一个文件夹下面 ). 这两个页面就可以是最简单的 jsp 页面 , 分别显示登录成功和登录失败就可以了

下面是fail.jsp的内容

  1. < %@page  language = "java"   contentType = "text/html;charset=utf-8" % >   
  2.   
  3. < html >   
  4. < body >   
  5.     < h2   align = "center" > 登录失败 </ h2 >   
  6. </ body >   
  7. </ html >   

下面是success.jsp的内容:

  1. < %@page  language = "java"   contentType = "text/html;charset=utf-8" % >   
  2.   
  3. < html >   
  4. < body >   
  5.     < h2   align = "center" > 登录成功 </ h2 >   
  6. </ body >   
  7. </ html >   
 

部署-->   运行 --> 成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值