Chinaunix首页 | 论坛 | 博客
  • 博客访问: 460613
  • 博文数量: 101
  • 博客积分: 578
  • 博客等级: 中士
  • 技术积分: 872
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-12 22:24
文章分类

全部博文(101)

文章存档

2015年(1)

2014年(83)

2012年(17)

我的朋友

分类: Java

2014-04-09 17:23:27

构建后目录结果如下:

struts2 和struts1有很大的不同,它的核心特征是所有的实现都是通过interceptors(拦截器),“value stack” (值栈),OGNL(表达式语言),以及包含了很多的注解使框架使用起来更简单。

下面一步一步构建学习Struts2。

工具:

1: Maven  Apache Maven 3.0.4

2:    JDK 1.7.0_10

3:     Eclipse4.2

4:     apache-tomcat-6.0.35

首先通过Maven构建一个Web项目。

Maven构建web项目的命令如下:

[plain] view plaincopy
  1. mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false  

然后构建我们的项目,首先进入到项目放置的位置:


然后执行构建命令:如下:

[plain] view plaincopy
  1. E:\struts2>mvn archetype:generate -DgroupId=com.topwqp -DartifactId=Struts2Examp  
  2. le -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false  
  3. [INFO] Scanning for projects...  
  4. [INFO]  
  5. [INFO] ------------------------------------------------------------------------  
  6. [INFO] Building Maven Stub Project (No POM) 1  
  7. [INFO] ------------------------------------------------------------------------  
  8. [INFO]  
  9. [INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>  
  10. >  
  11. [INFO]  
  12. [INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<  
  13. <  
  14. [INFO]  
  15. [INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom --  
  16. -  
  17. [INFO] Generating project in Batch mode  
  18. [INFO] -------------------------------------------------------------------------  
  19. ---  
  20. [INFO] Using following parameters for creating project from Old (1.x) Archetype:  
  21.  maven-archetype-webapp:1.0  
  22. [INFO] -------------------------------------------------------------------------  
  23. ---  
  24. [INFO] Parameter: groupId, Value: com.topwqp  
  25. [INFO] Parameter: packageName, Value: com.topwqp  
  26. [INFO] Parameter: package, Value: com.topwqp  
  27. [INFO] Parameter: artifactId, Value: Struts2Example  
  28. [INFO] Parameter: basedir, Value: E:\struts2  
  29. [INFO] Parameter: version, Value: 1.0-SNAPSHOT  
  30. [INFO] project created from Old (1.x) Archetype in dir: E:\struts2\Struts2Exampl  
  31. e  
  32. [INFO] ------------------------------------------------------------------------  
  33. [INFO] BUILD SUCCESS  
  34. [INFO] ------------------------------------------------------------------------  
  35. [INFO] Total time: 23.207s  
  36. [INFO] Finished at: Sat May 04 10:57:34 CST 2013  
  37. [INFO] Final Memory: 9M/24M  
  38. [INFO] ------------------------------------------------------------------------  
  39. E:\struts2>  
构建成功后,生成的web项目的目录结构为:


|-src
   |---main
   |-----resources
   |-----webapp
   |-------index.jsp
   |-------WEB-INF
   |---------web.xml
   |-pom.xml

然后把需要引入的jar包在pom.xml中进行配置。

配置后的pom.xml文件如下:

[plain] view plaincopy
  1.   xsi:schemaLocation=" http://maven.apache.org/maven-v4_0_0.xsd">  
  2.   4.0.0  
  3.   com.topwqp  
  4.   Struts2Example  
  5.   war  
  6.   1.0-SNAPSHOT  
  7.   Struts2Example Maven Webapp  
  8.   
  9.     
  10.       
  11.       junit  
  12.       junit  
  13.       3.8.1  
  14.       test  
  15.       
  16.       
  17.             junit  
  18.             junit  
  19.             3.8.1  
  20.             test  
  21.           
  22.           
  23.             org.apache.struts  
  24.             struts2-core  
  25.             2.3.1.2  
  26.           
  27.           
  28.           
  29.             javassist  
  30.             javassist  
  31.             3.12.1.GA  
  32.           
  33.    
  34.     
  35.     
  36.     Struts2Example  
  37.       
  38.               
  39.                 maven-compiler-plugin  
  40.                 2.3.2  
  41.                   
  42.                     1.7  
  43.                     1.7  
  44.                   
  45.               
  46.           
  47.     
  48.   



配置pom.xml后,下一步需要导入到eclipse中,如果导入到eclispe中需要对项目进行转换,


转换为eclipse项目的命令  mvn  eclipse:eclipse -Dwtpversion=2.0  

如果运行以上命令首先需要进入到pom.xml的文件目录下:

运行结果如下:

[plain] view plaincopy
  1. E:\struts2>cd Struts2Example  
  2.   
  3. E:\struts2\Struts2Example>mvn eclipse:eclipse -Dwtpversion=2.0  
  4. [INFO] Scanning for projects...  
  5. [INFO]  
  6. [INFO] ------------------------------------------------------------------------  
  7. [INFO] Building Struts2Example Maven Webapp 1.0-SNAPSHOT  
  8. [INFO] ------------------------------------------------------------------------  
  9. [INFO]  
  10. [INFO] >>> maven-eclipse-plugin:2.9:eclipse (default-cli) @ Struts2Example >>>  
  11. [INFO]  
  12. [INFO] <<< maven-eclipse-plugin:2.9:eclipse (default-cli) @ Struts2Example <<<  
  13. [INFO]  
  14. [INFO] --- maven-eclipse-plugin:2.9:eclipse (default-cli) @ Struts2Example ---  
  15. [INFO] Adding support for WTP version 2.0.  
  16. [INFO] Using Eclipse Workspace: null  
  17. [INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAIN  
  18. ER  
  19. Downloading: 
  20. truts2-core-2.3.1.2.pom  
  21. Downloaded: 
  22. ruts2-core-2.3.1.2.pom (12 KB at 4.2 KB/sec)  
  23. Downloading: 
  24. /struts2-parent-2.3.1.2.pom  
  25. Downloaded: 
  26. struts2-parent-2.3.1.2.pom (27 KB at 33.2 KB/sec)  
  27. Downloading: 
  28. -master-8.pom  
  29. Downloaded: 
  30. master-8.pom (9 KB at 20.9 KB/sec)  
  31. Downloading: 
  32. Downloaded: (14 KB a  
  33. t 32.6 KB/sec)  
  34. Downloading: 
  35. .2/xwork-core-2.3.1.2.pom  
  36. Downloaded: 
  37. 2/xwork-core-2.3.1.2.pom (11 KB at 23.3 KB/sec)  
  38. Downloading: 
  39. Downloaded: (6 KB at 1  
  40. 3.8 KB/sec)  
  41. [WARNING] Invalid POM for ognl:ognl:jar:3.0.4, transitive dependencies (if any)  
  42. will not be available, enable debug logging for more details  
  43. Downloading: 
  44. Downloaded: (264 B at 0.6 KB/  
  45. sec)  
  46. Downloading: 
  47. Downloaded: (5  
  48. KB at 9.9 KB/sec)  
  49. Downloading: 
  50. Downloaded: (  
  51. 415 B at 1.0 KB/sec)  
  52. Downloading: 
  53. Downloaded: (404 B  
  54. at 1.0 KB/sec)  
  55. Downloading: 
  56. ker-2.3.18.pom  
  57. Downloaded: 
  58. er-2.3.18.pom (2 KB at 2.9 KB/sec)  
  59. Downloading: 
  60. truts2-core-2.3.1.2.jar  
  61. Downloaded: 
  62. ruts2-core-2.3.1.2.jar (757 KB at 100.6 KB/sec)  
  63. Downloading: 
  64. .2/xwork-core-2.3.1.2.jar  
  65. Downloaded: 
  66. 2/xwork-core-2.3.1.2.jar (606 KB at 61.6 KB/sec)  
  67. Downloading: 
  68. Downloaded: (223 KB at  
  69.  89.6 KB/sec)  
  70. Downloading: 
  71. Downloaded: (43 KB at 22.9 KB  
  72. /sec)  
  73. Downloading: 
  74. Downloaded: (  
  75. 38 KB at 31.4 KB/sec)  
  76. Downloading: 
  77. Downloaded: (21 KB  
  78. at 35.6 KB/sec)  
  79. Downloading: 
  80. ker-2.3.18.jar  
  81. Downloaded: 
  82. er-2.3.18.jar (903 KB at 118.5 KB/sec)  
  83. Downloading: 
  84. .0.1.jar  
  85. Downloaded: 
  86. 0.1.jar (156 KB at 81.0 KB/sec)  
  87. [INFO] Wrote settings to E:\struts2\Struts2Example\.settings\org.eclipse.jdt.cor  
  88. e.prefs  
  89. [INFO] Wrote Eclipse project for "Struts2Example" to E:\struts2\Struts2Example.  
  90. [INFO]  
  91. [INFO] ------------------------------------------------------------------------  
  92. [INFO] BUILD SUCCESS  
  93. [INFO] ------------------------------------------------------------------------  
  94. [INFO] Total time: 42.871s  
  95. [INFO] Finished at: Sat May 04 11:05:36 CST 2013  
  96. [INFO] Final Memory: 7M/19M  
  97. [INFO] ------------------------------------------------------------------------  
  98. E:\struts2\Struts2Example>  

执行以上命令就是通过maven下载相应的依赖jar包,然后生成了一下文件:

.classpath

.project

.setting

以上三个文件夹是执行mvn eclipse:eclipse -Dwtpversion=2.0命令得到的。

这里有一个问题,现在没有弄明白,导入到eclipse中后发现没有src/main/java目录,打开生成的.classpath文件在第一行加上


[plain] view plaincopy
  1.   

然后在相应的目录下创建java的文件夹即可;


加上这句话后.classpath文件的内容如下:


[plain] view plaincopy
  1.   
  2.   
  3.     
  4.     
  5.     
  6.     
  7.     
  8.     
  9.     
  10.     
  11.     
  12.     
  13.     
  14.     
  15.     
  16.     
  17.     
  18.   

然后导入到eclipse中即可,导入后 的目录结构为:

如果把项目部署到tomcat上的时候,会出现 Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

这个问题,解决方法;

找到路径E:\workspace\Struts2Example\.settings下面的org.eclipse.wst.common.project.facet.core文件

修改  为   即可;

修改后的文件为:


[plain] view plaincopy
  1.   
  2.   
  3.     
  4.     
  5.     
  6.     
  7.   

然后再次进行部署就没有问题了。


首先创建:UserAction类:


[java] view plaincopy
  1. package com.topwqp.action;  
  2.   
  3. public class UserAction {  
  4.     private String username;  
  5.   
  6.     public String getUsername() {  
  7.         return username;  
  8.     }  
  9.   
  10.     public void setUsername(String username) {  
  11.         this.username = username;  
  12.     }  
  13.       
  14.     public  String execute(){  
  15.         return "SUCCESS";  
  16.     }  
  17.   
  18. }  

UserAction类很简单,不需要实现什么借口,或者继承什么类的, execute()方法是默认执行的方法,返回 SUCCESS是为了进行跳转转向。


login.jsp如下: 用到了struts2的标签库


[java] view plaincopy
  1. <%@ page contentType="text/html; charset=UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3.   
  4.   
  5.   
  6.     

    Struts 2 Hello World Example

      
  7.    
  8.     "Welcome">  
  9.         "username" label="Username" />  
  10.         "password" label="Password" />  
  11.           
  12.       
  13.    
  14.   
  15.   



welcome.jsp内容如下: 


[java] view plaincopy
  1. <%@ page contentType="text/html; charset=UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags"%>  
  3.   
  4.   
  5.   
  6.     

    Struts 2 Hello World Example

      
  7.    
  8.     

      

  9.         Hello  
  10.         "username" />  
  11.       
  12.    
  13.   
  14.   

tomcat容器去加载web.xml文件,web.xml文件内容如下:



[html] view plaincopy
  1.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  2.  "" >  
  3.    
  4. <web-app>  
  5.     <display-name>Struts 2 Web Applicationdisplay-name>  
  6.    
  7.     <filter>  
  8.         <filter-name>struts2filter-name>  
  9.         <filter-class>  
  10.                 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  11.                 filter-class>  
  12.     filter>  
  13.    
  14.     <filter-mapping>  
  15.         <filter-name>struts2filter-name>  
  16.         <url-pattern>/*url-pattern>  
  17.     filter-mapping>  
  18. web-app>  

web.xml回去加载struts.xml文件,其中配置了拦截的通配符路径。


struts.xml文件的内容如下:

其中package的name属性不起其他作用,仅仅是一个标记,namespace属性有重要作用,对应于webapp/user 这个目录的命名空间,所以当访问

时  就是访问对应的

两个访问效果是一样的。



[html] view plaincopy
  1. xml version="1.0" encoding="UTF-8" ?>  
  2. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  3. "">  
  4.    
  5. <struts>  
  6.    
  7.     <package name="user" namespace="/user" extends="struts-default">  
  8.         <action name="Login">  
  9.             <result>pages/login.jspresult>  
  10.         action>  
  11.         <action name="Welcome" class="com.topwqp.action.UserAction">  
  12.             <result name="SUCCESS">pages/welcome.jspresult>  
  13.         action>  
  14.     package>  
  15.    
  16. struts>  



PS 如果是struts1 实现这个直接跳转的功能 代码如下:


[html] view plaincopy
  1. <action  
  2.         path="/Login"  
  3.         type="org.apache.struts.actions.ForwardAction"  
  4.         parameter="/pages/login.jsp"/>  

跳转后如果提交就会提交到Welcome对应的action


路径为:


struts2的命名空间(namespace)对于模块化开发有很好的作用。

访问如下:

点击提交后页面挑战如下:





例子的下载地址:
Struts2Example.zip






阅读(4623) | 评论(0) | 转发(0) |
0

上一篇:java 反编译工具

下一篇:nexus相关

给主人留下些什么吧!~~