SSH之 Structs2配置与入门

1  创建web项目


2  导入struts2中所需要的包.

struts2-core-2.2.1.1.jar  struts2中的核心包

xwork-core-2.2.1.1.jar   xwork 也是一个web框架, webwork 是基于xwork的..

commons-fileupload-1.2.1.jar commons-io-1.3.2.jar  处理流和文件上传

freemarker-2.3.16.jar   模板引擎的处理框架,    将jsp或者其他的模板高效生成html.. 

ognl-3.0.jar 相当于el和jstl   , 当时比这里牛多了...

javassist-3.7.ga.jar  主要是多java类的字节码文件进行处理

 

3、配置strust2在当前的web项目中

在web.xml中配置struts2所需的核心过滤器

          <filter>
           <filter-name>struts2</filter-name>
           <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
         </filter>
         <filter-mapping>
           <filter-name>struts2</filter-name>
           <url-pattern>/*</url-pattern>
         </filter-mapping>


4 写处理请求所需要的Action      

        public class HelloAction {
           public void hello(){
               System.out.println("HelloAction....hello Method");
           }
        }


5、在struts.xml中配置上面的Action.

 struts.xml 放在classpath的根目录下面, struts.xml的名字是固定的..

 根据约束文件写struts.xml,  在struts.xml中如果不会提示节点,那么需要eclipse关联dtd

        

6、执行Action.

        http://localhost:8080/app_name/package_namespace/action_name

每次请求都会创建一个Action的对象, 存在线程安全性..

 

7、structs.xml中的一些配置:

      <struts>
           <!-- paclage分包管理你的Action
            name: 给包起一个名字
           namespace: 给包映射是个命名空间,要访问里面的action必须通过namespace来访问
           -->
           <package name="first" namespace="/first">
           <!--注释
                一个action节点来处理一个请求
                    name: 给action起一个名字:    访问该action 需要通过  包的namespace/action_name
              -->
               <actionname="hello" class="cn.itcast.cd.action.HelloAction"method="hello">    
               </action>
           </package>
       </struts>


8、使用拦截器:

定义:   

<interceptors>

         <interceptorname="params"class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

      </interceptors>

调用:

      <actionname="hello"class="cn.itcast.cd.action.HelloAction"method="hello">

         <interceptor-refname="params"></interceptor-ref>

      </action>

 

9. Result返回页的配置

    9.1  Action中对应的方法执行完后需要转到一个视图

        需要通过该Action中定义的方法的返回的String字符串来指定Result

    9.2  这些Result都需要配置到:

<action name="threePage"class="cn.itcast.cd.action.ResultAction"method="result3">

               <!—类型配置的注释:

                     name:  action中的方法执行完后返回的字符串

                     type:  以哪种方式转向指定的页面

                                该类型提前做好配置:

1.可以自己配置:在当前Action所在的包中配置

<result-types>
      <result-type name="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult">
</result-type>
       <result-type name="redirect"class="org.apache.struts2.dispatcher.ServletRedirectResult">
</result-type>
	<result-type name="plaintext"class="org.apache.struts2.dispatcher.PlainTextResult"></result-type>
</result-types>

那么这些配置类型只能够在当前包中使用,或者是在当前包的子包中使用..


2. 可以继承struts-default包使用里面定义好的类型,例:

<package name="oa"namespace="/oa" extends="struts-default">

注释结束-->    

<resultname="page3"type="plainText">

                    <paramname="location">/page3.jsp</param>

                    <paramname="charSet">UTF-8</param>

</result>

</action>

 

如果action没有指定type就会是用默认的type,在result-types定义的时候就指定...structs-default包里预定义的默认type是dispatcher,可以更改后面的default=true来更改默认type

 

如果在包中定义:

    <global-results>
        <result name="globalResult">
              /globalResult.jsp
              </result>
    </global-results>           

     那么当Action对应的方法执行完后,按照返回的字符串找Result,但是在当前Action中找不到对应的Result就会去global-results

 

10、常用的Result Type

   1. Dispatcher    请求转发

   2. Redirect      URL重定向

   3. PlainText      纯文本


 11. 常量配置:

     在根元素<struts>下可以使用constant子元素配置常量。

       从strut2的核心jar包内的org.apache.struts2包下的default.properties文件中可以看到各个常量的注释说明,典型几个常量:

       <constant name=“struts.action.extension” value=“do,go”/>配置访问Action的后缀,可以配置多个后缀名。 提示:default.properties文件中为该常量配置了一个空字符串。

       常量struts.devmode可以让struts在控制台中打印出更多的信息和重新加载配置文件。

       常量struts.configuration.xml.reload可以让struts重新加载配置文件,但不会导致web应用重新启动。

       常量struts.i18n.encoding可以设置struts内部进行各种字符编码处理时的字符集编码,例如,用于获取请求参数时的解码、读取静态文本文件和输出静态文本文件时的字符解码和编码。

       <constant name=“struts.enable.DynamicMethodInvocation” value=“false”/>可以配置不支持动态方法调用。


       常量可以在下面多个文件中进行定义,struts2加载常量的搜索顺序如下,后面的设置可以覆盖前面的设置:

       default.properties文件

       struts-default.xml

       struts-plugin.xml

       struts.xml

       struts.properties(为了与webwork向后兼容而提供)

       web.xml


       对于struts.devmode有时候不好使



12、包的定位和Action的查找

       <!--根据请求的url地址找最匹配的包的namespace, 如果在最最匹配的包中找不到对应的Action,那么也不会到其它包中查找 -->


       <!--com/itcast/asdfasdflasdf/a/sdfa/sdf/asdf/asdf/cd/paction1.action  不写下面一个包的时候这个找得到,最匹配的/com路径下,有定义action名称-->

       <packagename="packageName" namespace="/com"  extends="struts-default">

                     <actionname="paction1" class="cn.itcast.cd.action.PackageAction"method="paction1">

                     </action>

       </package>


       <!--http://localhost:8080/com/itcast/asdfasdflasdf/a/sdfa/sdf/asdf/asdf/cd/paction1.action这个链接找不到,最匹配的/com/itcast下面没有定义action-->

       <package name="packageName1" namespace="/com/itcast"  extends="struts-default">

       </package>

      

       <!--com/itcast/asdfasdflasdf/a/sdfa/sdf/asdf/asdf/cd/paction1.action不打这个链接,只用“/”可以找到-->

       <packagename="packageName2" namespace="/"  extends="struts-default">

                     <actionname="paction2" class="cn.itcast.cd.action.PackageAction"method="paction2">

                     </action>

       </package>


       <!--

         如果一个包上的namespace没有写或者是namespace="" , 表明该包是一个默认包的命名空间:

        如果在一个包中找不到对应的Action 那么就会到默认的包中找Action

        -->

       <packagename="default_packageName3" extends="struts-default">

                     <actionname="paction1" class="cn.itcast.cd.action.PackageAction"method="paction1">

                     </action>

       </package>

 

13、Structs.xml中的默认值与配置:

在根元素<struts>下可以使用include子元素引入其他的配置文件,这样可以将各个模块分散在不同的配置文件中进行配置

<!--配置默认的Action,用于说明在该包下不存在的action路径映射,都可以统交给一个默认的<action>元素去处理。-->
 <default-action-refname="employeeadd"></default-action-ref>

<!--配置默认的class,如果说一个Aciton中没有配置到class就用这个 -->
<default-class-refclass="cn.itcast.cd.action.EmployeeAction"></default-class-ref>
 
<!--method的默认方法为: execute()      class的默认值为:com.opensymphony.xwork2.ActionSupport-->
<actionname="employeeadd">

<!-- result>元素的type属性和name属性都可以不设置,默认值分别为dispatcher和success   result中的param如果只有一个的话默认是location   -->

<result>/success.jsp</result>
</action>
</package>    



插件:

使用ConfigBrowser Plugin浏览已经装载的配置信息和列表针对各个包名称空间下的所有Action的访问链接。


14动态方法调用:

14.1、在url里面/action名称+感叹号+方法名,不推荐使用此方法

14.2、通配符:

              <!--通配符在name上面使用
                 1. 在class method  result上面可以引用通配符实际上匹配到的内容
               -->
              <actionname="*_*" class="cn.itcast.cd.action.{1}Action"method="{2}">
                     <resultname="list">/WEB-INF/view/{1}/list.jsp</result>
                     <resultname="edit">/WEB-INF/view/{1}/edit.jsp</result>
                     <resulttype="redirect">
                            /oa/{1}_list
                     </result>
              </action>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值