struts 2.0入门

一、执行Struts框架
 客户端   ---- 请求  -----  Struts框架
          ----------------------------  过滤器 Interceptor
          ----------------------------  Action
                ------------------调用JavaBean、Dao 等访问数据库等操作
                -------------------根据执行情况返回结果类型,同时把需要返回的数据作为Action的属性进行赋值
                -------------------框架根据返回结果类型,把内容交给jsp页面、或者其他模板
                -------------------模板根据数据生成返回结果        
          ----------------------------  过滤器 Interceptor
 客户端  ------回执-------  Struts 
 
 整个过程通过Struts.xml和struts引入的其他配置文件一起控制
     1、 Action
     2、 Inteceptor
     3、 result
  使用Struts框架后,所有动态的内容都通过Action进行处理
  所有的请求都会经过Inteceptor  ---- Struts内置了一系列过滤器可以完成:
                 参数读取【fileupload例外】                                     *
     文件上传 【使用 apache file upload inteceptor】                *
     字符集转换
     结果集转换
     ......
二、配置文件                 
 1、内置配置文件  struts-default.xml  
     result-types  定义了struts自己支持的所有结果类型
     interceptors  定义了struts可以使用的所有Interceptor【我们可以定义自己的interceptors】
     default-interceptor-ref 缺省拦截使用的过滤器的栈
     不包括具体的Action
 2、系统配置文件  struts.properties
             定义Struts里面的常量 例如
        struts.enable.DynamicMethodInvocation=false  动态方法调用
        struts.devMode=false                         以开发模式运行
三、Struts配置文件结构配置
1、struts.xml的结构

   保留内容
 ---------------------------------------------------------------------------
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
 ---------------------------------------------------------------------------
 修改内容
 ---------------------------------------------------------------------------
 <package>[0-n]
    <action>[0-n]
    <result>[0-n]
 -------------------------------------
 package定义                              struts-default           实际上是uri
    name="用来唯一标示package"  extends="继承的package定义" namespace="/">

 action定义
    name="用来提供给客户端访问的表示[服务器段转发也可以用],在同一个namespace/package中是一个唯一标示"  一定会有
    class="com.cstp.struts.demo.StrutsDemo"    该Action的实现类,该类必须从AbstractAction中继承下来 如果没有,直接到result
    method="DoTest"          调用该Action的时候执行的方法 如果没有定义,执行execute
 result定义
  name="*"    用来匹配从Action的方法调用中得到的返回值,如果是* 任何返回使用该result,如没有,任何返回都不用该result
  type="dispatcher"
   Result的类型,forward、redirect.... struts-default.xml中的所有result-type中定义的name都可以使用
    <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
    <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
    <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
    <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
    <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
    <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
    <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
    <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
    <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
    <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />

 ------------------------------------------------------------------------------
 保留内容
 </struts>
2、struts.properties的配置
 ########注释
 #  扩展名配置
 #  缺省为 action
 #  ,do,action
 struts.action.extension=baoding,do,action,,

 ##########
 #Struts缺省字符集编码
 #国际化的时候使用
 struts.i18n.encoding=UTF-8
 struts.locale=en_US
 #zh_CN
 #UTF-8
 # I18N  国际化
 # I1xN  本地化

 ################
 #  反射注入/对象容器
 #   Spring+Struts
 #    IOC
 # 缺省情况,使用com.opensymphony.xwork2.ObjectFactory的Struts子类org.apache.struts2.impl.StrutsObjectFactory
 # 使用spring的时候,需要指明:struts.objectFactory=spring

 ################
 #  动态方法调用
 #  就是是否支持 ActionName!MethodName.do的方式进行调用
 struts.enable.DynamicMethodInvocation=true

 ################
 #  动态方法调用
 #  就是是否支持通过参数得到Action的类名称进行调用的方式
 #   <action name="*/*" method="{1}" class="com.cstp.baoding.action.demo.{2}">
 struts.enable.SlashesInActionNames=true
 
 ####################################
 #是否开发模式运行,相当于两个配置项
 #struts.i18n.reload=true  自动重新加载i18n的配置文件[实际上就是它对应的properties文件]
 #struts.configuration.xml.reload=true  自动重新加载Struts.xml、Struts.properties文件
 struts.devMode=false
 struts.custom.i18n.resources=file1,file2...
 #需要使用Struts的国际化标签才可以体现出来
 #file.properties file_fr.pr...  file_zh_CN.properties

 ###################################
 #与界面相关的配置   Struts标签有关
 # 模板

 # 模板类型
 struts.ui.theme=xhtml
 # 模板路径
 struts.ui.templeteDir=templete
 # 模板扩展名
 struts.ui.templeteSuffix=ftl
 #在使用Struts自定标签或者Struts模板引擎的时候会涉及到上面三个配置项

 #使用Struts标签中有关url的操作使用的参数
 struts.url.http.port=80
 struts.url.https.port=433
 struts.url.includeParams=get/post/none

 ##################
 #文件上传   ......拦截器会直接调用下列配置项,
 #multipart 类型数据的解析器---就是文件上传的使用用来传输数据的类型
 struts.multipart.parser=jakarta
 struts.multipart.saveDir=./upload
 struts.multipart.maxSize=1024
3、struts-plugin.xml     配置Struts插件
4、velocity.properties   配置Struts中页面使用的模板                位置:/WEB-INF/classes/
四、简单struts所需jar包
 commons-fileupload-1.2.1.jar          inteceptor 中的文件上传必须用到的第三方库
 commons-io-1.3.2.jar                  IO操作需要的
 commons-logging-1.1.jar               记录日志所需要的
 freemarker-2.3.13.jar                 freemarker 模板引擎    --- .vm
 junit-3.8.1.jar                       java测试框架
 ognl-2.6.11.jar                       语言解释器
 struts2-core-2.1.6.jar                struts的核心库
 xwork-2.1.2.jar                       webwork的类库【struts 2 的父版本】
 //  spring-test-2.5.6.jar                 Spring测试库 - 内置了Spring的struts2-spring-plugin-2.1.6.jar 插件,可以无缝整合
五、建立一个简单的struts程序步骤
    1 、导入 8 个 jar文件
    2、 建立 struts.xml配置文件
    3、  配置struts具体内容
           建立package[注意namespace和extends]
     建立自己的Action配置项
    4、 建立自己的Action
            AbstractAction中继承下来
   定义方法,返回值必须是String 可见性必须是 public

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值