`
soardragon
  • 浏览: 317639 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

初识struts2.0

阅读更多

先按照文档,做一次:

1,建立WEB.XML:

代码
  1. <!---->  
  2. <!---->xml version="1.0" encoding="UTF-8"?>  
  3. <web-app>  
  4.   
  5.     <display-name>Struts Blankdisplay-name>  
  6.   
  7.     <filter>  
  8.         <filter-name>struts2filter-name>  
  9.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcherfilter-class>  
  10.     filter>  
  11.   
  12.     <filter-mapping>  
  13.         <filter-name>struts2filter-name>  
  14.         <url-pattern>/*url-pattern>  
  15.     filter-mapping>  
  16.   
  17.     <listener>  
  18.         <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>  
  19.     listener>  
  20.   
  21.     <welcome-file-list>  
  22.         <welcome-file>index.htmlwelcome-file>  
  23.     welcome-file-list>  
  24. web-app>  

 

文档中有一个org.apache.struts2.dispatcher.FilterDispatcher的filter
还有org.springframework.web.context.ContextLoaderListener

2.建SPRING的BEAN配置文件:applicationContext.xml

 

代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->>  
  3.   
  4. <beans default-autowire="autodetect">  
  5.     <!---->  
  6. beans>  

 

3.建struts配置文件:

代码
  1. <!---->
  2.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  3.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  4.   
  5. <struts>  
  6.   
  7.     <include file="example.xml"/>  
  8.   
  9.     <!---->  
  10.   
  11. struts>  

 

演示了一下配置文件分块的方法,下面这个才起作用:

<!----> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

 

代码
  1. <struts>  
  2.   
  3.     <package name="example" namespace="/example" extends="struts-default">  
  4.   
  5.         <action name="HelloWorld" class="example.HelloWorld">  
  6.             <result>/example/HelloWorld.jspresult>  
  7.         action>  
  8.   
  9.         <action name="Login!*" method="{1}" class="example.Login">  
  10.             <result name="input">/example/Login.jspresult>  
  11.             <result type="redirect-action">Menuresult>  
  12.         action>  
  13.   
  14.         <action name="*" class="example.ExampleSupport">  
  15.             <result>/example/{1}.jspresult>  
  16.         action>  
  17.   
  18.         <!---->  
  19.     package>  
  20. struts>  

 

4,录入验证:Login-validation.xml
这个很象struts1.x

代码
  1. <!---->
  2.         "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
  3.         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
  4.   
  5. <validators>  
  6.     <field name="username">  
  7.         <field-validator type="requiredstring">  
  8.             <message key="requiredstring"/>  
  9.         field-validator>  
  10.     field>  
  11.     <field name="password">  
  12.         <field-validator type="requiredstring">  
  13.             <message key="requiredstring"/>  
  14.         field-validator>  
  15.     field>  
  16. validators>  

 

5.建立资源文件package.properties,这个也很象struts1.x

 

代码
  1. HelloWorld.message= Struts is up and running ...   
  2. requiredstring = ${getText(fieldName)} is required.   
  3. password = Password   
  4. username = User Name   
  5. Missing.message =  This feature is under construction. Please try again in the next interation.  

 

6.搞个action类,和WW2一模一样:

 

代码
  1. package example;   
  2.   
  3. public class Login extends ExampleSupport {   
  4.   
  5.     public String execute() throws Exception {   
  6.   
  7.         if (isInvalid(getUsername())) return INPUT;   
  8.   
  9.         if (isInvalid(getPassword())) return INPUT;   
  10.   
  11.         return SUCCESS;   
  12.     }   
  13.   
  14.     private boolean isInvalid(String value) {   
  15.         return (value == null || value.length() == 0);   
  16.     }   
  17.   
  18.     private String username;   
  19.   
  20.     public String getUsername() {   
  21.         return username;   
  22.     }   
  23.   
  24.     public void setUsername(String username) {   
  25.         this.username = username;   
  26.     }   
  27.   
  28.     private String password;   
  29.   
  30.     public String getPassword() {   
  31.         return password;   
  32.     }   
  33.   
  34.     public void setPassword(String password) {   
  35.         this.password = password;   
  36.     }   
  37.   
  38. }  

 

7.搞个helloworld类,也和WW2一样:
这里调用了资源文件中的 message, 这里比struts1.X类似功能要直接,会好用一些

 

代码
  1. package example;   
  2.   
  3. /**   
  4.  * <code>Set welcome message.code>  
  5.  */   
  6. public class HelloWorld extends ExampleSupport {   
  7.   
  8.     public String execute() throws Exception {   
  9.         setMessage(getText(MESSAGE));   
  10.         return SUCCESS;   
  11.     }   
  12.   
  13.     /**   
  14.      * Provide default valuie for Message property.   
  15.      */   
  16.     public static final String MESSAGE = "HelloWorld.message";   
  17.   
  18.     /**   
  19.      * Field for Message property.   
  20.      */   
  21.     private String message;   
  22.   
  23.     /**   
  24.      * Return Message property.   
  25.      *   
  26.      * @return Message property   
  27.      */   
  28.     public String getMessage() {   
  29.         return message;   
  30.     }   
  31.   
  32.     /**   
  33.      * Set Message property.   
  34.      *   
  35.      * @param message Text to display on HelloWorld page.   
  36.      */   
  37.     public void setMessage(String message) {   
  38.         this.message = message;   
  39.     }   
  40. }  

 

8。搞个父类出来,这里只是演示用,所以空的

ExampleSupport.java

代码
  1. package example;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4.   
  5. /**  
  6.  * Base Action class for the Tutorial package.  
  7.  */  
  8. public class ExampleSupport extends ActionSupport {   
  9. }  

 

9。可以测试一下了:

 

代码
  1. package example;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4. import com.opensymphony.xwork2.config.entities.ActionConfig;   
  5.   
  6. import java.util.Map;   
  7. import java.util.Collection;   
  8. import java.util.List;   
  9.   
  10. public class LoginTest extends ConfigTest {   
  11.   
  12.     public void FIXME_testLoginConfig() throws Exception {   
  13.         ActionConfig config = assertClass("example""Login!input""example.Login");   
  14.         assertResult(config, ActionSupport.SUCCESS, "Menu");   
  15.         assertResult(config, ActionSupport.INPUT, "/example/Login.jsp");   
  16.     }   
  17.   
  18.     public void testLoginSubmit() throws Exception {   
  19.         Login login = new Login();   
  20.         login.setUsername("username");   
  21.         login.setPassword("password");   
  22.         String result = login.execute();   
  23.         assertSuccess(result);   
  24.     }   
  25.   
  26.     // Needs access to an envinronment that includes validators   
  27.     public void FIXME_testLoginSubmitInput() throws Exception {   
  28.         Login login = new Login();   
  29.         String result = login.execute();   
  30.         assertInput(result);   
  31.         Map errors = assertFieldErrors(login);   
  32.         assertFieldError(errors,"username","Username is required.");   
  33.         assertFieldError(errors,"password","Password is required.");   
  34.     }   
  35.   
  36. }  

代码
  1. package example;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4. import junit.framework.TestCase;   
  5.   
  6. public class HelloWorldTest extends TestCase {   
  7.   
  8.     public void testHelloWorld() throws Exception {   
  9.         HelloWorld hello_world = new HelloWorld();   
  10.         String result = hello_world.execute();   
  11.         assertTrue("Expected a success result!",   
  12.                 ActionSupport.SUCCESS.equals(result));   
  13.         assertTrue("Expected the default message!",   
  14.                 hello_world.getText(HelloWorld.MESSAGE).equals(hello_world.getMessage()));   
  15.     }   
  16. }  

 

 

代码
  1. package example;   
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;   
  4. import com.opensymphony.xwork2.config.RuntimeConfiguration;   
  5. import com.opensymphony.xwork2.config.entities.ActionConfig;   
  6. import com.opensymphony.xwork2.config.entities.ResultConfig;   
  7. import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;   
  8.   
  9. import java.util.Map;   
  10. import java.util.List;   
  11.   
  12. import org.apache.struts2.StrutsTestCase;   
  13.   
  14. public class ConfigTest extends StrutsTestCase {   
  15.   
  16.     protected void assertSuccess(String result) throws Exception {   
  17.         assertTrue("Expected a success result!",   
  18.                 ActionSupport.SUCCESS.equals(result));   
  19.     }   
  20.   
  21.     protected void assertInput(String result) throws Exception {   
  22.         assertTrue("Expected an input result!",   
  23.                 ActionSupport.INPUT.equals(result));   
  24.     }   
  25.   
  26.     protected Map assertFieldErrors(ActionSupport action) throws Exception {   
  27.         assertTrue(action.hasFieldErrors());   
  28.         return action.getFieldErrors();   
  29.     }   
  30.   
  31.     protected void assertFieldError(Map field_errors, String field_name, String error_message) {   
  32.   
  33.         List errors = (List) field_errors.get(field_name);   
  34.         assertNotNull("Expected errors for " + field_name, errors);   
  35.         assertTrue("Expected errors for " + field_name, errors.size()>0);   
  36.         // TODO: Should be a loop   
  37.         assertEquals(error_message,errors.get(0));   
  38.   
  39.     }   
  40.   
  41.     protected void setUp() throws Exception {   
  42.         super.setUp();   
  43.         XmlConfigurationProvider c = new XmlConfigurationProvider("struts.xml");   
  44.         configurationManager.addConfigurationProvider(c);   
  45.         configurationManager.reload();   
  46.     }   
  47.   
  48.     protected ActionConfig assertClass(String namespace, String action_name, String class_name) {   
  49.         RuntimeConfiguration configuration = configurationManager.getConfiguration().getRuntimeConfiguration();   
  50.         ActionConfig config = configuration.getActionConfig(namespace, action_name);   
  51.         assertNotNull("Mssing action", config);   
  52.         assertTrue("Wrong class name: [" + config.getClassName() + "]",   
  53.                 class_name.equals(config.getClassName()));   
  54.         return config;   
  55.     }   
  56.   
  57.     protected ActionConfig assertClass(String action_name, String class_name) {   
  58.         return assertClass("", action_name, class_name);   
  59.     }   
  60.   
  61.     protected void assertResult(ActionConfig config, String result_name, String result_value) {   
  62.         Map results = config.getResults();   
  63.         ResultConfig result = (ResultConfig) results.get(result_name);   
  64.         Map params = result.getParams();   
  65.         String value = (String) params.get("actionName");   
  66.         if (value == null)   
  67.             value = (String) params.get("location");   
  68.         assertTrue("Wrong result value: [" + value + "]",   
  69.                 result_value.equals(value));   
  70.     }   
  71.   
  72.     public void testConfig() throws Exception {   
  73.         assertNotNull(configurationManager);   
  74.     }   
  75.   
  76. }  

 

哦,测试通过!

10。看看表示层是如何用的?
HelloWorld.jsp

代码
  1. <%@ page contentType="text/html; charset=UTF-8" %>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>  
  5.     <title><s:text name="HelloWorld.message"/>title>  
  6. head>  
  7.   
  8. <body>  
  9. <h2><s:property value="message"/>h2>  
  10.   
  11. <h3>Languagesh3>  
  12. <ul>  
  13.     <li>  
  14.         <s:url id="url" action="HelloWorld">  
  15.             <s:param name="request_locale">ens:param>  
  16.         s:url>  
  17.         <s:a href="%{url}">Englishs:a>  
  18.     li>  
  19.     <li>  
  20.         <s:url id="url" action="HelloWorld">  
  21.             <s:param name="request_locale">ess:param>  
  22.         s:url>  
  23.         <s:a href="%{url}">Espanols:a>  
  24.     li>  
  25. ul>  
  26.   
  27. body>  
  28. html>  

 

Login.jsp

 

代码
  1. <%@ page contentType="text/html; charset=UTF-8" %>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>  
  5.     <title>Sign Ontitle>  
  6. head>  
  7.   
  8. <body>  
  9. <s:form action="Login">  
  10.     <s:textfield label="%{getText('username')}" name="username"/>  
  11.     <s:password label="%{getText('password')}" name="password" />  
  12.     <s:submit/>  
  13. s:form>  
  14. body>  
  15. html>  
分享到:
评论

相关推荐

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    在"初识[Struts2.0]并[使用Struts2.0]进行SSH集成"的学习过程中,"userLogin"可能是一个示例应用,涉及用户登录功能。用户登录通常包括用户输入验证、数据库查询等操作,这些可以通过Struts2.0的Action实现,而...

    Struts教程大全

    "struts2.0中文帮助手册.chm"是Struts 2的中文版帮助文档,对于中文使用者来说,这是一个非常实用的资源,因为它能帮助理解复杂的框架概念和用法,避免语言障碍。 "精通Struts技术.doc"和"Struts架构指导.doc"可能...

    strus2.0的使用

    Struts2.0是Java Web开发中的一个框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了一种结构化和可扩展的方式来构建应用程序。在本手册中,我们将深入探讨Struts2.0的核心概念和使用方法。 **1. ...

    struts2学习笔记

    初识struts2配置文件 **(1).web.xml文件** - **StrutsPrepareAndExecuteFilter**:这是struts2框架的入口点,负责初始化整个框架并处理所有HTTP请求。 - **初始化参数**:配置StrutsPrepareAndExecuteFilter时...

    JAVA程序开发大全---上半部分

    12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...

    struts2超详细笔记

    #### 二、初识struts2配置文件 struts2的配置主要包括以下几个文件: **(1)web.xml文件** - **StrutsPrepareAndExecuteFilter**:负责初始化整个struts框架,并处理所有请求。可以设置初始化参数,如指定加载...

    java web 整合开发源代码(第四章)

    在本章中,我们将深入探讨Java Web整合开发的第四章——"初识Java EE展示层组件JSP2.0"。这一章节主要关注如何利用JavaServer Pages(JSP)技术来构建动态网页,同时结合Struts和Hibernate这两个关键框架,为Java ...

    《精通Java+Web整合开发》刘斌

    第08章“初识Java EE经典MVC框架Struts”带领读者进入模型-视图-控制器(Model-View-Controller,MVC)设计模式的世界。Struts是Java Web开发中广泛应用的一个开源框架,用于构建基于JSP和Servlet的应用。在这一章,...

    精通JSP-Web开发技术与典型应用 光盘代码

    \ch01\* 第1章 初识JSP所有例程代码 \ch02\* 第2章 HTTP和Servlet基础 所有例程代码 \ch03\* 第3章 JSP基本语法所有例程代码 \ch04\* 第4章 JSP内置对象所有例程代码 \ch05\* 第5章 JavaBean在JSP中的应用所有...

Global site tag (gtag.js) - Google Analytics