3.8 简单例子的分析(含代码注释和配置文件说明)
    
      
        安装
      
    
    
      
        Struts
      
    
    
      
    
    
        安装
    
    
      Struts
    
    
      很容易,而且它不需要复杂的配置。首先,从
    
    
      http://jakarta.apache.org/site/binindex.html
    
    
      下载
    
    
      Struts
    
    
      安装文件。在编写本文期间,
    
    
      1.0
    
    
      版是稳定版本,而
    
    
      1.1
    
    
      版是
    
    
      bata
    
    
      版。(在这一系列的项目中我用到
    
    
      1.1-b2
    
    
      版)
    
    
      
    
    
    
    
      
    
    
    
    
      Struts
    
    
      程序是用
    
    
      Java
    
    
      写的,因此它要求使用
    
    
      JDK1.2 
    
    
      或更高级的版本。它同时要求一个与解析
    
    
      XML
    
    
      的
    
    
      Java API
    
    
      (
    
    
      JAXP
    
    
      )规范相兼容中的
    
    
      XML
    
    
      解析器。你需要将
    
    
      XML
    
    
      解析库(
    
    
      jaxp.jar/parser.jar/
    
    
      其他文件)加入到你的
    
    
      CLASSPATH
    
    
      环境变量中去。而且,如果你在使用数据库,你则需要从
    
    
      http://java.sun.com/products/jdbc
    
    
      中下载并安装
    
    
      JDBC 2.0 Optional Package Binary
    
    
      。(如果你用的是
    
    
      JDK1.4
    
    
      ,那么
    
    
      XML
    
    
      解析器和
    
    
      JDBC 2.0 Optional Package Binary
    
    
      会自动包含在里面。)
    
    
      
    
    
    
    
      
    
    
        还有,
    
    
      Struts
    
    
      要求使用一个支持
    
    
      Servlet API 2.2
    
    
      或更高版本的
    
    
      servlet
    
    
      容器。要找到已被确认的可以使用
    
    
      Struts
    
    
      的
    
    
      servlet
    
    
      容器列表,请查阅
    
    
      INSTALL
    
    
      文件。
    
    
      
    
    
    
    
      
    
    
        最后,要使
    
    
      Struts
    
    
      运转起来,你需要加入一个环境变量
    
    
      JAVA_HOME
    
    
      ,使其指向
    
    
      JDK
    
    
      安装根目录,并将
    
    
      .jar
    
    
      文件复制到每个程序的
    
    
      WEB-INF/lib
    
    
      目录下。
    
    
      
    
    
    
    
      
    
    
      
        注册程序
      
    
    
      
    
    
        这是一个简单的注册程序的例子,仅用到了
    
    
      MVC
    
    
      模式中的视图和控制器。它要求用户在查看公司机密账号之前输入用户名和密码。展示的第一个页面是
    
    
      Longin
    
    
      页面(见图
    
    
      1
    
    
      )。如果注册成功,用户可以看到
    
    
      Main Menu
    
    
      页面(见图
    
    
      2
    
    
      ),其中包含两个链接:一个是退出,另一个是查看公司机密账号。如果注册失败,则用户会被重新引导到注册页面。
    
    
      
    
    
    
    
    
  
    
      
    
    
    
    
    
  
图 1. 注册
    
      
    
    
        如果用户输入正确的用户名和密码,程序会建立一个
    
    
      session
    
    
      对象,并会有一个叫做
    
    
      loggedIn
    
    
      的属性被添加到这个
    
    
      session
    
    
      对象中去。只有当程序能够在用户的
    
    
      session
    
    
      对象中查找到这个
    
    
      loggedIn
    
    
      属性时用户才可以浏览
    
    
      Main Menu
    
    
      页面和
    
    
      Secret
    
    
      页面。所有缺少该属性或无效的
    
    
      session
    
    
      对象都会迫使用户登陆。(正确的用户名是
    
    
      “john”
    
    
      ,密码是
    
    
      “123”
    
    
      。这些值是程序中固定写死的以避免需要连接到数据库里或使用其他存储来完成用户验证。)
    
    
      
    
    
    
    
      
    
    
        当用户退出时,他或她的
    
    
      session
    
    
      对象将会失效,同时
    
    
      Longin
    
    
      页面会重新显示。当用户点击链接要查看公司机密时,会弹出
    
    
      Secret
    
    
      页面(见图
    
    
      3
    
    
      )。
    
    
      
    
    
        有三种
    
    
      JSP
    
    
      页面是以
    
    
      MVC
    
    
      模式中视图的形式出现的:
    
    
      login.jsp (
    
    
      见图
    
    
      1), mainMenu.jsp (
    
    
      见图
    
    
      2), and viewSecret.jsp (
    
    
      见图
    
    
      3)
    
    
      。
    
    
      
    
    
    
    
    
  
    
      
    
    
    
    
    
  
图 2. 主要事件
    
      
    
    
        由于所有
    
    
      Struts
    
    
      应用程序同时也是
    
    
      Model 2
    
    
      应用程序,所以它们必须具备一些用来充当
    
    
      MVC
    
    
      模式中控制器的东西(在该例子中是一个控制器
    
    
       servlet
    
    
      )。在使用
    
    
      Struts
    
    
      时,你无需编写自己的控制器
    
    
      servlet
    
    
      。程序已经帮你建好了,这也是用
    
    
      Struts
    
    
      来提高开发效率的方法之一。
    
    
      
    
    
    
    
      
    
    
        在
    
    
      Struts
    
    
      应用程序中控制器
    
    
      servlet
    
    
      是
    
    
      org.apache.struts.action.ActionServlet
    
    
      类的一个实例。该类是包含在
    
    
      struts.jar
    
    
      文件中的诸多类的一个成员,所以你得在每个开发的程序中分发此文件。
    
    
      
    
    
    
    
      
    
    
      
         
      
    
    
    
  
      
        
      
      
      
      
      
    
图 3. 你发现了一个秘密
      
        
      
      
          这个控制器
      
      
        servlet
      
      
        将根据请求中的
      
      
        URL
      
      
        把请求发送给适合的视图。依照惯例,这个
      
      
        URI
      
      
        是以
      
      
        .do
      
      
        结尾的。例如,指向
      
      
        Secret
      
      
        页面请求的
      
      
        URI
      
      
        是:
      
      
        http://domain/appName/viewSecret.do
      
      
        ,而指向
      
      
        Longin
      
      
        页面中的
      
      
        URL
      
      
        是
      
      
        http://domain/appName/login.do
      
      
        。(当然,在
      
      
        URI
      
      
        后面也可以带有其他信息)
      
      
        
      
      
      
      
        
      
      
          如果你编写过
      
      
        servlet
      
      
        或者
      
      
        JSP
      
      
        应用程序,你可能猜想在部署描述符当中使用了
      
      
        servlet
      
      
        映射,以便将请求发送到
      
      
        ActionServlet
      
      
        实例中去。没错,
      
      
        Struts
      
      
        是另一种版本的
      
      
        servlet/JSP
      
      
        程序。程序中的描述符显示在列表
      
      
        1
      
      
        中。这些代码说明了以下三点:
      
      
        
      
      
      
      
        
      
      
      
      
      
      
        在
      
      
        action servlet
      
      
        配置部分,
      
      
        org.apache.struts.action.ActionServlet
      
      
        类的实例被称为
      
      
        action
      
      
        。
      
      
        
      
      
      
      
        
      
      
      
      
      
      
        所有以
      
      
        .do
      
      
        结尾的
      
      
        URL
      
      
        均被映射到
      
      
        action servlet
      
      
        中。
      
      
        
      
      
      
      
        
      
      
      
      
         Login.jsp
      
      
        是一个
      
      
        welcome file
      
      
        ,它是在
      
      
        URL
      
      
        不包含资源名称时
      
      
        (
      
      
        换言之,当
      
      
        URL
      
      
        属于
      
      
        http://domain/myApp form
      
      
        时
      
      
        )
      
      
        被调用的默认文件。
      
      
        
      
      
      
      
        
      
      
          此外,列表
      
      
        1
      
      
        中的部署描述符没有什么特殊的用法,它只是简单地说明
      
      
        Struts
      
      
        应用程序和一般的
      
      
        servlet
      
      
        应用程序很相似。
      
      
        
      
      
      
      
        
      
      
          应用程序中对资源的请求被发送到
      
      
        ActionServlet
      
      
        中去,然后由它将控制权转给其他对象,这些对象称为
      
      
        action objects
      
      
        。我会在这个系列的第二部分中讲解
      
      
        action 
      
      
        对象和其他一些应用程序。
      
      
        
      
      
      
      
        
      
      
          现在你知道了如何安装和配置
      
      
        Struts
      
      
        ,而且你也弄懂了注册程序项目规范和部署描述符,那么你可以点击此处下载全部程序。
      
    


 
       
       
					 
					