运行struts

来源:互联网 发布:如何注册知乎账号 编辑:程序博客网 时间:2024/05/13 03:31
开发环境:
IDE: MyEclipse7.0     Tomcat服务器: Tomcat6.0       JDK:1.6.0      struts2: struts-2.0.14
struts-2.0.14包中的内容解释:
      apps:struts2实例;lib:struts2所需jar包;src:源码;docs:struts2所有帮助文档
步骤:
   1>创建WEB工程:struts2。
   2>将WEB工程部署到Tomcat服务器中。
    具体操作:在Tomcat6.0/conf/server.xml中的<host></host>标签中添加以下内容
    <Context path="/struts2" docBase="f:/struts2/WebRoot" reloadable="true"/>
    解释:path指的是工程的虚拟路径。docBase:工程的路径/WebRoot。reloadable:当开发时修改当前某个类文件或配置文件时是否重新加载(重启服务器)。如果时true则重新加载,如果时false则不重新加载(手动重启)。在工程真正部署及开发完毕,运行工程时,需要设置为false提高Tomcat效益;
   3>配置web.xml文件。在web.xml文件<web-app></web-app>标签中添加以下内容:
      <filter>
         <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.xml将过滤客户端所发过来的所有请求。<filter-class>表示过滤器所在的包名和类名。作为struts2控制器来过滤客户端所发过来的请求。<filter></filter>标签和<filter-mapping></filter-mapping>中的 <filter-name>标签内容必须一致。/*表示所有的请求都应该有struts2控制器来过滤。
   4>创建jsp页面。
   5>根据jsp页面创建相应的action类文件。在action类文件中添加:
      public String execute() throws Exception {
  return "success"; //success和struts.xml文件中的result标签中的name属性值一样
 }
   
   6>根据jsp页面和action类文件在src目录下创建struts.xml文件。内容如下:
    通用部分(不可改变的部分):
   <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "[url]http://struts.apache.org/dtds/struts-2.0.dtd[/url]">
  
     解释:<!DOCTYPE struts PUBLIC根据这句话来判断,struts.xml文件中以struts作为根元素(标签).          
  接着添加以下内容:
  <struts>
    <package name="struts2" extends="struts-default">//表示struts2这个包继承struts-default包。
       <action name="login" class="com.test.action.LoginAction">//name值必须和jsp页面中的 form表单中的
                                                                                                    action 属性值一致。
  <result name="success">/result.jsp</result> //表示提交成功则跳转到result.jsp页面。
       </action>
    </package>
 </struts>
  7>启动Tomcat,测试成功!
 
 
学习目的:在jsp页面有两个文本框username和password.当用户什么都不输入提交表单时,提示错误信息
。当输入用户名为hello密码为123时则在另一个页面显示该信息。输入其他信息则提示错误。
1>创建login2.jsp并导入struts2标签.
  具体操作:在表头下面添加:<%@ taglib prefix="s" uri="/struts-tags" %>
  解释:prefix表示标签修饰符,可以随意定义,默认为:s. uri表示标签在什么地方。
2>在login2.jsp页面,使用struts2创建表单和内容。
  注意:
     (1)使用struts2标签,表单的action属性值默认时就是.action格式,所以在action值不需加.action
        。直接写login就可以也就是说:使用标签action="login"与不使用标签action="login.action"
        是一样的。
     (2)在创建文本框时,<textfield>标签表示文本框和不使用struts2标签时的<text>一样,其中    
         label属性值表示文本框前面的名字。
     (3)使用struts2标签自动换行。
3>根据login2.jsp页面内容创建相应的action类文件并继承ActionSupport接口。
4>在action类中重新validate()方法。内容如下:
    if(null==this.getUsername() || "".equals(this.getUsername().trim()))
       {
                  //在username文本框上面显示username required错误信息。
               this.addFieldError("username", "username required");
       }
    if(null==this.getPassword() || "".equals(this.getPassword().trim()))
       {
               //在password文本框上面显示passwordrequired错误信息。 
               this.addFieldError("password", "password required");
        }
解释:validate()方法只做简单的判断,如为空或字段的长度。判断逻辑信息时则不在validate()方法中
     判断。
5>配置struts.xml
 <struts>
    <package name="struts2" extends="struts-default">
    <action name="login" class="com.test.action.LoginAction">
    <result name="success">/result.jsp</result>
    <result name="input">/login2.jsp</result>  //name属性值input时固定的。当用户名或密码不填
                                                                            时则回到login2.jsp并提示错误信息。
    </action>
    </package>
   
    </struts>
6>在action类中execute()方法中添加如下信息:
       if("hello".equals(this.getUsername().trim()) && "123".equals(this.getPassword()))
               {
                      return "success";//和struts.xml中的name属性值一值
                }
       else
                {
                         this.addFieldError("username", "username or password error");
                        
                          return "failer";   //和struts.xml中的name属性值一值
                  }
   注意:在判断是常量要写在前面。这样不抛NullPointerExcepion异常。
7>返回struts.xml添加
 <result name="failer">/login2.jsp</result> //用户名不时hello或密码不是123则跳转到login2.jsp
8>测试。
  struts2的流程:在客户端提交信息之后,信息会转到对应的action类,在action处理完之后,又会转 
到result.jsp。从jsp到action类,又从action类跳转到jsp页面。全部都是用的dispatcher()请求转发,
也就是在一个request里。
学习目的:在jsp页面有两个文本框username和password.当用户什么都不输入提交表单时,提示错误信息
。当输入用户名为hello密码为123时则在另一个页面显示该信息。输入其他信息则提示错误。
1>创建login2.jsp并导入struts2标签.
  具体操作:在表头下面添加:<%@ taglib prefix="s" uri="/struts-tags" %>
  解释:prefix表示标签修饰符,可以随意定义,默认为:s. uri表示标签在什么地方。
2>在login2.jsp页面,使用struts2创建表单和内容。
  注意:
     (1)使用struts2标签,表单的action属性值默认时就是.action格式,所以在action值不需加.action
        。直接写login就可以也就是说:使用标签action="login"与不使用标签action="login.action"
        是一样的。
     (2)在创建文本框时,<textfield>标签表示文本框和不使用struts2标签时的<text>一样,其中    
         label属性值表示文本框前面的名字。
     (3)使用struts2标签自动换行。
3>根据login2.jsp页面内容创建相应的action类文件并继承ActionSupport接口。
4>在action类中重新validate()方法。内容如下:
    if(null==this.getUsername() || "".equals(this.getUsername().trim()))
       {
                  //在username文本框上面显示username required错误信息。
               this.addFieldError("username", "username required");
       }
    if(null==this.getPassword() || "".equals(this.getPassword().trim()))
       {
               //在password文本框上面显示passwordrequired错误信息。 
               this.addFieldError("password", "password required");
        }
解释:validate()方法只做简单的判断,如为空或字段的长度。判断逻辑信息时则不在validate()方法中
     判断。
5>配置struts.xml
 <struts>
    <package name="struts2" extends="struts-default">
    <action name="login" class="com.test.action.LoginAction">
    <result name="success">/result.jsp</result>
    <result name="input">/login2.jsp</result>  //name属性值input时固定的。当用户名或密码不填
                                                                            时则回到login2.jsp并提示错误信息。
    </action>
    </package>
   
    </struts>
6>在action类中execute()方法中添加如下信息:
       if("hello".equals(this.getUsername().trim()) && "123".equals(this.getPassword()))
               {
                      return "success";//和struts.xml中的name属性值一值
                }
       else
                {
                         this.addFieldError("username", "username or password error");
                        
                          return "failer";   //和struts.xml中的name属性值一值
                  }
   注意:在判断是常量要写在前面。这样不抛NullPointerExcepion异常。
7>返回struts.xml添加
 <result name="failer">/login2.jsp</result> //用户名不时hello或密码不是123则跳转到login2.jsp
8>测试。
  struts2的流程:在客户端提交信息之后,信息会转到对应的action类,在action处理完之后,又会转 
到result.jsp。从jsp到action类,又从action类跳转到jsp页面。全部都是用的dispatcher()请求转发,
也就是在一个request里。
原创粉丝点击