Gay Bird

登高者必自卑,行远者必自迩,在这个世界上,重要的不是你正站在那里,而是你正朝什么方向移动......

struts2笔记 - helloworld

可以从Apache Struts 的官方站点(http://struts.apache.org)下载发布版本,当前最新的版本是2.0.9。下载的版本中包含struts2-core.jar和相关的依赖类库文件,示例程序,HTML格式的文档,和全部的源代码。

1,导入struts2需要的jar文件
commons-logging-1.0.4.jar              日志记录接口,可以配置选择使用jdk1.4 log 或者 log4j
freemarker-2.3.8.jar                        所有标签的模板都是用Freemarker编写
ognl-2.6.11.jar                               Objet Graph NavigationLanguage,Struts2表达式的基础。
struts2-core-2.0.9.jar                      struts2框架类库
xwork-2.0.4.jar                               xwork类库,struts2的基础

2,配置web.xml文件
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
>

<web-app>
  
<display-name>My Application</display-name>
  
<filter>
    
<!--配置struts过滤器-->
    
<filter-name>struts2</filter-name>
    
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  
</filter>

  
<filter-mapping>
    
<filter-name>struts2</filter-name>
    
<url-pattern>/*</url-pattern>
  
</filter-mapping>
</web-app>

3,配置struts.xml文件
必须要把该文件建立在编译好的WEB-INF下的classes目下
在myeclipse可以把它新建到src下。src下的所有资源文件等都会在保存时自动编译到classes目录
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
>

<struts>
    
<!-- 配置默认的包. -->
    
<package name="default" extends="struts-default">
         
    
</package>
</struts>


3,建立页面文件
Struts2提交一个请求的时候,输入的数据并没有直接送给下一个页面,而是送给了一个你提供的Java类。这种Java类被称为Action。当 Action执行之后,Struts2会选择一个结果作为返回,通常情况下是一个JSP页面,但是也可以是PDF文件,Excel表单或者Java Applet窗口。
这时需要做的是
  • 创建一个JSP页面来显示欢迎消息
  • 创建一个Action类来生成欢迎消息
  • 在struts.xml中创建一个配置项来关联上述的Action和JSP页面

  • 建立jsp页面
    第一行引入了struts2的标签库,在之后的页面中可以使用s标签了。这行在几乎所有的struts2应用的jsp页面中都会出现

    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
        
    <head>
            
    <title>Hello World!</title>
        
    </head>
        
    <body>
            
    <s:form action="hello">
             
    <s:textfield name="name" label="name" />
           
    </s:form>
        
    </body>
    </html>

    创建action类
    execute方法用来处理业务操作
    import com.opensymphony.xwork2.ActionSupport;
    public class HelloWorld extends ActionSupport {

        
    private String name;
        
    public String execute() throws Exception {
           
    return SUCCESS;
        }


        
    public void setName(String name){
            
    this.name= name;
        }


        
    public String getName() {
            
    return name;
        }

    }

    配置struts.xml关联jsp和action
    <!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
        
    <package name="tutorial" extends="struts-default">        
            
    <action name="HelloWorld" class="tutorial.HelloWorld">         
                
    <result>/HelloWorld.jsp</result>        
            
    </action>       
         
    </package>
    </struts>

    工作原理
    当浏览器发送请求 http://localhost:8080/tutorial/HelloWorld.action 的时候,在服务器上发生了如下事件:

    1. 服务器接收到对HelloWorld.action的请求,根据web.xml文件中的配置,所有以.action结尾的请求都会被 org.apache.struts2.dispatcher.FilterDispatcher过滤,所以这个请求被发送给 FilterDispatcher,FilterDispatcher是Struts 2 框架的入口点。
    2. Struts 2 框架查找HelloWorld.action对应的Java 类,发现是HelloWorld.java,之后Struts 2 框架实例化了一个HelloWorld类,并且调用了这个类的execute方法。
    3. execute方法设置了message的内容,并且返回SUCCESS。框架却定返回值SUCCESS,并且找到对应的内容HelloWorld.jsp,并且通知服务器将HelloWorld.jsp作为返回内容。
    4. 在HelloWorld.jsp被处理的过程中,<s:property value="message" />标签的内容被替换为HelloWorld 的getMessage方法调用的结果
    5. 根据HelloWorld.jsp内容生成的HTML内容被发回到请求的浏览器。
    结果类型(Result Type)
    Action 处理完成之后,会选择一个结果返回给客户,这个结果可能是简单的HTML页面,JSP页面,FreeMarker模板,Velocity模板,或者是一个 PDF文旦个或者是更复杂的JasperReports。一个Action可能有几个可选的结果类型,为了决定到底使用那个结果类型,Action类的 execute方法必须返回一个标记结果类型的字符串。
    struts.xml
    <action name="Logon" class="tutorial.Logon">
      <result type="redirect-action">Menu</result>
      <result name="input">/tutorial/Logon.jsp</result>
    </action>
    如果我们输入了用户名和密码,Logon Action会返回“success”。"success"是默认的返回结果,这个时候会使用Menu action作为结果。
    如果我们什么也不输入,Logon Action 会返回"input", Struts 2会使用Logon.jsp 作为结果返回

    posted on 2008-10-08 14:31 Sky Yi 阅读(477) 评论(0)  编辑  收藏


    只有注册用户登录后才能发表评论。


    网站导航: