第一个struts2.1程序

今天编写了struts2.1的第一个程序,虽然功能很简单,但遇到的问题还很多

 

版本:struts-2.1.6

 

 

1.创建java web

2.导入jar包(不能是全部)
         (复制struts2的例子struts2-blank-2.1.6中的jar)

        或只导入需要的jar

           * struts2-core-2.1.6.jar

           * commons-fileupload-1.2.1.jar

           * commons-logging-api-1.1.jar

           * freemarker-2.3.13.jar

           * ognl-2.6.11.jar

           * xwork-2.1.2.jar

        (本处只比例子中少了junit和spring相关的jar)

3.在web.xml文件中配置struts的filter过滤器 
      (不能复制例子程序中的web.xml)
     <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>
 
4.在scr下创建struts.xml文件

     struts.xml必须放在classpath下

             与struts1.x有些不同

5.编写action并继承ActionSupport,覆盖execute方法

      struts2中的action是struts1.x中的ActionForm+action

        本action及可以收集参数和jsp来访问,也可以执行execute方法调用model层的代码

6.配置action在struts.xml中 
            需要配置真实的包,类的全名
          <package name="lyl"  extends="struts-default">
                   <action name="Hello" class="lyl.HelloAction">
                     <result >/hello.jsp</result>
                     </action>
              </package>
   
7.创建hello.jsp
    * 导入struts2的标签库
             <%@ taglib  prefix="s" uri="/struts-tags"%> 
     * 访问action中的属性值(必须要有getXXX方法)
                <s:property value="message"/>


8.访问使用action中定义的name+.action 如 Hello.action

9.遇到的错误 

        9.1 复制struts2-blank-2.1.6中的web.xml文件将出错

                因为它们的struts的filter不同
        9.1.不能将所有的jar导入 struts2/lib/*.jar

            导入struts2/lib/*.jar 将出现的错误,
                Unable to load configuration. - bean - jar:file:/D:/tomcat6/webapps/struts/WEB-                 INF/lib/struts2-convention-plugin-2.1.6.jar!/struts-plugin.xml:30:119

              解决方案:使用struts2自带的例子struts2-blank-2.1.6\WEB-INF\lib下的jar即可


        9.2.没有将struts.xml放在src下 
              在访问时将出现找不到action
                  There is no Action mapped for namespace / and action name

        9.3.配置action时需要用真实包 

struts2的程序的执行流程:

 1.用户通过url请求(.action)

 2.服务器(如tomcat)将根据web.xml文件中配置的struts2的Filter(过滤器)

      将所有.action的请求交由struts2处理

 3.struts2在(classpath下)struts.xml文件中查找对应的action

 4.调用action的execute方法,并返回string(SUCCESS)给struts2

 5.struts2再次在struts.xml文件中对应的action中查找对应返回string的result标签,并转向到jsp页面中

 6.jsp根据显示的内容,有可能需要访问action的属性(实际是通过反射调用getXxx方法)

 7.运行jsp对应的servlet,并将运行结果放在response中,(实际上面使用的jsp都是编译好的servlet)

 8.服务器从response中获取数据并生成html或其他的格式的文件,并将这些文件通过http协议发送给客户端(浏览器)
   

 

 

 

你可能感兴趣的:(spring,Web,jsp,xml,struts)