我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Struts2详细配置文件说明
总共48087条微博

动态微博

查看: 1804|回复: 0

Struts2详细配置文件说明

[复制链接]

114

主题

29

听众

429

金钱

传功长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-08-05 21:58:38 |只看该作者 |倒序浏览

一:struts2的配置文件有哪些,相对应的作用是什么?

Web.xml:包含所有必须的框架组件的web部署描述符.Struts2主要加载前端控制器及初始化参数.

4 f+ n3 J+ v5 I) V' L1 r( M; ?

Struts.xml:定义应用自身使用的action映射,拦截器及常量,result/view定义.

' T  Z+ g; G0 o& t( I9 R- }

Struts-default.xml:定义框架自身用的action映射及result

) v  o, y0 |( ?, E  c! S2 Z7 K

Struts-plugin.xml:struts插件使用的配置文件


; Z) K6 A; d8 |' Z. J3 f5 }& r

Struts.properties:定义框架自身的全局变量及框架属性.


5 g, q# ~0 x% u, I! c3 |4 j% B% e$ \7 l5 n# D

二:配置文件的加载顺序


$ l3 E6 C4 Q  {" w2 D7 A$ z$ D

Struts-default.xml-->struts-plugin.xml-->struts.xml-->struts.properties-->web.xml

, p/ l- q; R% S) X/ f. L" F

注:若之前的配置文件设置过某一属性,则以后加载的配置文件对于相同的属性的设置,会覆盖之前的配置

三:Struts2常量的具体用法实例Xml代码

  1. <font color="rgb(0, 0, 0)"><font face="SimSun"><font size="2"><b><?xml version="1.0" encoding="UTF-8" ?>     
    2 e) C% ^, ^5 D" u' n9 |! {; T# L
  2. <!DOCTYPE struts PUBLIC      6 y7 v; N- [1 q
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"      7 A' O& }! j6 V3 l2 d
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">     # c+ D- E3 Y9 Z, t  ~  r2 o! l& D
  5.      
    . b( z( N( H2 u/ `# L2 |
  6. <struts>     
    5 c, Q& y) t! v  C
  7.     <!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->     
    ; f  N/ X0 t4 l& I( N" Y
  8.     <constant name="struts.i18n.encoding" value="UTF-8" />     7 A% w( ?% F, r+ F7 S! u' ~# C
  9.      
    # |, x. Q) ^. T) z. E$ y& x
  10.     <!--      4 T1 j+ Y$ a8 _) }9 @# |# l
  11.         该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。      
    * |/ y( u4 V; j; \
  12.         如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。      
    , q) r3 h% W( }1 ?6 }( n  i
  13.     -->     
    # L6 s' {3 `9 e3 _7 s
  14.     <constant name="struts.action.extension" value="do" />     3 c# B, z7 r5 J9 H3 {  p/ M
  15.      
    2 o6 w  A3 l& ]& k* b- o8 w
  16.     <!-- 设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->     
    * B- U; s1 ^2 c( W3 h% C. n$ B
  17.     <constant name="struts.serve.static.browserCache" value="false" />     
    ) G! B5 _/ L8 P1 R" ~8 f2 ~4 @
  18.      
    : U$ m/ L6 d0 X, a: W, B! J% M, Z& X
  19.     <!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->     ( f* O1 \% g8 L- y
  20.     <constant name="struts.configuration.xml.reload" value="true" />     
    % W/ Y0 F% P# P5 w, L
  21.      
      m  z. |, ~. w# V3 b4 [  \- \
  22.     <!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->     : J2 d* l8 G9 O) X: |
  23.     <constant name="struts.devMode" value="true" />     
    / y; |! P& J9 p9 b9 @3 d" a
  24.      
    ! @. q! |% c; k# g
  25.     <!-- 默认的视图主题 -->     ! \  j6 E0 x9 \: S; D
  26.     <constant name="struts.ui.theme" value="simple" />     # K4 y% ~. ?3 A1 \9 L8 d
  27.      : D1 l0 N" `- K2 H$ Y
  28.     <!-- spring 托管 -->     
    3 b- D# ]/ q6 @
  29.     <constant name="struts.objectFactory" value="spring" />     9 y7 M1 Y" p0 x
  30.      ! o6 G- T4 D- n
  31.     <!--      $ q% e5 h" P  L" [4 k3 W: C, o
  32.         指定加载struts2配置文件管理器,默认为org.apache.struts2.config.DefaultConfiguration      % J# M  S, `9 Y
  33.         开发者可以自定义配置文件管理器,该类要实现Configuration接口,可以自动加载struts2配置文件。      6 Q' f" L1 c6 I4 A( ^4 U  z
  34.     -->     
    , D! L+ |! }, _. @2 V: L
  35.     <constant name="struts.configuration"     
    5 n- _/ o& T5 q0 F8 k9 D2 P
  36.         value="org.apache.struts2.config.DefaultConfiguration" />     , t- L' O! v8 o0 @& k1 h: z
  37.      $ o! y0 a0 n- d) m2 X8 w  J$ _, {
  38.     <!-- 设置默认的locale和字符编码 -->     
      Q3 Y: n1 Y7 t  v
  39.     <constant name="struts.locale" value="zh_CN" />     ! E6 v" I  d. d; ?* r" ~
  40.     <constant name="struts.i18n.encoding" value="GBK" />       q7 t; [) v( W, B# j' \6 c
  41.      # I& g$ Q7 L, R
  42.     <!-- 指定Struts的工厂类 -->     
    3 ^9 `, h5 c2 ~: K: w% }
  43.     <constant name="struts.objectFactory" value="spring"></constant>     
    2 K$ b" C4 a0 F9 o) F) r
  44.      
    0 S0 i1 ^( `3 P* P% J. ]
  45.     <!--      
    ) U8 b, `$ r# G( L8 g/ E
  46.         指定spring框架的装配模式,装配方式有: name, type, auto, and constructor (name      2 K' ?% w  z% m3 J0 b' |; ~) e4 k
  47.         是默认装配模式)      
    6 F4 f+ S" B- \. V& ~$ C
  48.     -->     - p( r* u/ N; ?7 T
  49.     <constant name="struts.objectFactory.spring.autoWire" value="name" />     
    ' S) a1 H- p5 [4 l
  50.      9 v6 j' i: t+ G) c. M5 q
  51.     <!-- 该属性指定整合spring时,是否对bean进行缓存,值为true or false,默认为true -->     
    7 n' ^6 A( f$ @
  52.     <cosntant name="struts.objectFactory.spring.useClassCache" />     
    - A) |  w3 H0 M/ j
  53.      ; T; H4 ~4 \0 L! [* s5 ^2 n: w+ A
  54.     <!-- 指定类型检查,包含tiger和notiger -->     
    ) z6 J' q5 u+ I7 j5 m6 m/ r+ v' I
  55.     <cosntant name="struts.objectTypeDeterminer" value="tiger" />     / e$ e; j0 U2 S; s5 Z/ |
  56.      ' e4 E% D: U5 n; g) t
  57.     <!-- 该属性指定处理 MIME-type multipart/form-data,文件上传 -->     : K. R" j4 b1 x
  58.     <constant name="struts.multipart.parser" value="cos" />     
    8 \' q1 C" Q; X" `; _. f
  59.     <constant name="struts.multipart.parser" value="pell" />     
    ! d" i1 e$ Q3 |
  60.     <constant name="struts.multipart.parser" value="jakarta" />     3 ^8 ?; _5 o3 P9 k( }
  61.      # F- D# c' X% J- _1 h
  62.     <!-- 指定上传文件时的临时目录,默认使用 javax.servlet.context.tempdir -->     
      J0 _& x& |2 p& l# B& S# y
  63.     <constant name="struts.multipart.saveDir" value="/tmpuploadfiles" />     
    $ n: o- P  u6 d6 {+ ]: V2 t; i* R6 S
  64.      
    * B$ z" j/ T. w8 C/ w; _2 O
  65.     <!-- 该属性指定Struts 2文件上传中整个请求内容允许的最大字节数 -->     # B+ i- v/ s6 t
  66.     <constant name="struts.multipart.maxSize" value="2097152" />     
    . P$ @$ p$ ]+ r2 }0 @5 y3 E/ W
  67.      ( o+ K1 Z, A8 X# Z# q
  68.     <!--      * p3 H; T. s+ X6 t) v8 k
  69.         该属性指定Struts2应用加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖      
    * p2 h- x$ @- U1 c: w/ C
  70.         struts.properties文件中指定的属性。如果需要加载多个自定义属性文件,多个自定义属性文      
    - z0 ^/ V3 c& o9 ^
  71.         件的文件名以英文逗号(,)隔开。(也就是说不要改写struts.properties!)      
    8 Y% M+ n3 K8 W* C
  72.     -->     0 M" @5 E5 P: S8 j1 \
  73.     <constant name="struts.custom.properties"     + r& ~2 U" c* Z7 ^6 T; r) F
  74.         value="application,org/apache/struts2/extension/custom" />     
    % C! C8 u, _6 R, l7 ~# t9 ~
  75.               
    4 J& H% ?7 l6 _) U
  76.     <!-- 指定请求url与action映射器,默认为org.apache.struts2.dispatcher.mapper.DefaultActionMapper -->     
    ) I; Q- {% d- c! y0 J
  77.     <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper" />     : k- A9 b; w4 O( k8 I; z4 `
  78.      
    5 w  q* c5 T) ]
  79.     <!-- 指定action的后缀,默认为action -->     
    ' {0 Y2 [/ |4 P8 w
  80.     <constant name="struts.action.extension" value="do" />       L# k7 U, O: {# L
  81.           ( e0 ?7 X0 F' |8 v* z: W6 c2 q
  82.     <!-- 被 FilterDispatcher使用指定浏览器是否缓存静态内容,测试阶段设置为false,发布阶段设置为true. -->     0 Q/ T0 P7 I/ A0 U; K7 A+ V7 `
  83.     <constant name="struts.serve.static.browserCache" value="true" />     
    # P$ W, o, C, V" K
  84.      
    4 W7 h5 m% s+ {+ Y
  85.     <!-- 设置是否支持动态方法调用,true为支持,false不支持. -->     3 q+ I* ], D& H
  86.     <constant name="struts.enable.DynamicMethodInvocation" value="true" />     
    * M/ h" V; ]! D/ P/ R  }1 H
  87.               1 S2 b5 d! k  _1 P- }
  88.     <!-- 设置是否可以在action中使用斜线,默认为false不可以,想使用需设置为true. -->     , A' y$ _, O8 Z+ g5 R
  89.     <constant name="struts.enable.SlashesInActionNames" value="true" />     ! B( @! U) ?! p
  90.          
    # o4 z/ ]$ j/ m4 g
  91.     <!-- 是否允许使用表达式语法,默认为true. -->     
    1 V1 S' c7 y" a; R2 j5 A& [9 L
  92.     <constant name="struts.tag.altSyntax" value="true" />     3 j, ^- U% f1 P
  93.      , H9 Z1 ]/ P$ m5 ]+ ^6 ~0 I
  94.     <!-- 设置当struts.xml文件改动时,是否重新加载 -->     
    & b' J& D- @3 s1 T. y, a) U
  95.     <cosntant name="struts.configuration.xml.reload" value="true" />     ) |" C' V0 d4 x% \; z; _) {* @) e
  96.           5 K9 {! L2 s% Q# @, q/ R5 o
  97.     <!-- 设置struts是否为开发模式,默认为false,测试阶段一般设为true. -->     
    , }! A/ a  I# U* g6 {
  98.     <cosntant name="struts.devMode" value="true" />     
    + K% S; S0 T% d& D; C& t) V
  99.      
    ; v. C! a' a+ h: K
  100.     <!-- 设置是否每次请求,都重新加载资源文件,默认值为false. -->     * |7 s, A" Z# `" t
  101.     <cosntant name="struts.i18n.reload" value="false" />     0 w7 q& }$ J, f7 R/ V& k5 k7 S
  102.      
    9 n1 K& m. b0 }0 P& N7 ]
  103.     <!-- 标准的UI主题,默认的UI主题为xhtml,可以为simple,xhtml或ajax -->     ( m% x9 e/ L0 M
  104.     <cosntant name="struts.ui.theme" value="xhtml" />     3 m" s1 _0 ?0 n1 m! p  X7 Z
  105.               
    4 d' q6 k9 w: @! b. Z4 F& C
  106.     <!-- 模板目录 -->     9 Y: n8 q7 r) f4 L& d; t
  107.     <cosntant name="struts.ui.templateDir" value="template" />       w! d& O4 q) i2 V2 i, Z
  108.      , ^- r) B) H1 A
  109.     <!-- 设置模板类型. 可以为 ftl, vm, or jsp -->       r( B  u+ T0 k( K
  110.     <cosntant name="struts.ui.templateSuffix" value="ftl" />     5 |5 m9 M& N! Q: {% l& \% |
  111.      
    " l* \" _# n0 T  T0 [& i
  112.     <!-- 定位velocity.properties 文件. 默认velocity.properties -->     
    7 c' T5 @! |8 R* W- G) f* G
  113.     <cosntant name="struts.velocity.configfile" value="velocity.properties" />     / V" L, P* o1 j5 v
  114.          
    2 l! {* g0 X; [5 d3 L) ~: k9 D( h
  115.     <!-- 设置velocity的context. -->     
    2 _& n% r* D! O) I0 T5 ?
  116.     <cosntant name="struts.velocity.contexts" value="...." />     
    ' `) [/ V. L: s2 V9 }# w$ A
  117.           - U0 I& _% v8 r- z* S
  118.     <!-- 定位toolbox -->     " K( ]) T! ?3 i& \- {
  119.     <cosntant name="struts.velocity.toolboxlocation" value="...." />     / B) f& W6 G1 F8 k1 w4 Z4 _* G
  120.      
    9 _# @" J* P# p7 P2 T
  121.     <!-- 指定web应用的端口 -->     
    + @- _/ D2 h4 W
  122.     <cosntant name="struts.url.http.port" value="80" />     / L9 u5 {- a5 t
  123.          
    ) N- a5 D- {' B
  124.     <!-- 指定加密端口 -->             - R) x8 @& h8 O6 J2 b
  125.     <cosntant name="struts.url.https.port" value="443" />     - w7 D) m3 Y+ S! G! }: Q
  126.      % N. i; S) a$ p
  127.     <!-- 设置生成url时,是否包含参数.值可以为: none,get or all -->     
    5 \+ b; K# a& d8 @; T/ r) q2 V, z, {
  128.     <cosntant name="struts.url.includeParams" value="get" />     * M3 [8 e4 x1 G. M8 E
  129.      1 P+ z& i' _8 ~3 m1 Q' t
  130.     <!-- 设置要加载的国际化资源文件,以逗号分隔. -->     
    6 C& ?  l7 X, y! O( S7 i" P0 I
  131.     <cosntant name="struts.custom.i18n.resources" value="application" />     7 G# l3 f) o0 c- K" G1 ]
  132.           8 c8 s3 Z" Z8 y& O. \9 C' Y
  133.     <!-- 对于一些web应用服务器不能处理HttpServletRequest.getParameterMap(),      / U1 h& E$ ^' f& O* M
  134.         像 WebLogic,Orion, and OC4J等,须设置成true,默认为false. -->     2 @2 G- @5 H& L8 G" i) P
  135.     <cosntant name="struts.dispatcher.parametersWorkaround" value="false" />        0 E$ E" S+ ]* n
  136.      
    7 j! q$ U$ i3 j
  137.     <!-- 指定freemarker管理器 -->     
    2 E1 L8 z/ P, Z# R$ l
  138.     <cosntant name="struts.freemarker.manager.classname" value="org.apache.struts2.views.freemarker.FreemarkerManager" />       0 k7 x& z  x: _" i: m& z) i
  139.      
    ) O( H6 y4 x+ T9 n
  140.     <!-- 设置是否对freemarker的模板设置缓存,效果相当于把template拷贝到 WEB_APP/templates. -->     
    % L8 i- c  T: v
  141.     <cosntant name="struts.freemarker.templatesCache" value="false" />         
    . N2 w2 z$ v! y; R+ x* K! N: J% v
  142.      0 L* R, v/ t* r- r. \- w+ }
  143.     <!-- 通常不需要修改此属性. -->     
    / T: O3 k0 t$ o1 k+ w2 }
  144.     <cosntant name="struts.freemarker.wrapper.altMap" value="true" />      
    - _5 ]/ p: |5 O6 G: M
  145.           2 s5 g6 k7 q& b
  146.     <!-- 指定xslt result是否使用样式表缓存.开发阶段设为true,发布阶段设为false. -->     0 E4 N. L; j% ~- Q7 i, k' p4 d
  147.     <cosntant name="struts.xslt.nocache" value="false" />      
    $ A$ o* W: `2 {+ [# ?4 m
  148.          
    ' P2 f- S- n- X/ g$ S
  149.     <!-- 设置struts自动加载的文件列表. -->     4 H' L, W' P1 Y- y$ a
  150.     <cosntant name="struts.configuration.files" value="struts-default.xml,struts-plugin.xml,struts.xml" />     + N- T& N! |% d  O/ ?
  151.               
    - g. f! V- i5 c" ?/ @
  152.     <!-- 设定是否一直在最后一个slash之前的任何位置选定namespace. -->     * T" J) Z5 u$ m1 y
  153.     <cosntant name="struts.mapper.alwaysSelectFullNamespace" value="false" />     * j  O9 \4 \- `8 d
  154. </struts>   + V% X, r0 d( U" N
  155.   
    # R( I0 A7 y7 I+ K% Y
  156.    
      Z" v$ I; s/ ~* \6 Q
  157.   
    8 q9 F' m5 t+ e  |; ?% }. }* K7 Q$ c
  158. <struts>  ) r8 ]7 E3 L" J) Z
  159.   
    # s. u, A1 U2 B  K5 a
  160.     <!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->  4 }) y3 y1 y8 O9 I
  161.     <include file="struts-default.xml"></include>  9 @( g) S* S8 e8 u1 Q
  162.       
    : ]$ u- p4 }, P0 G. G" O5 r3 }
  163.       ! I  m& y+ U4 _& H3 {) c7 B6 G- k& c
  164.     <!-- package提供了将多个Action组织为一个模块的方式  
    2 c5 A2 C8 t5 Z, ~) }3 K3 V! w
  165.         package的名字必须是唯一的 package可以扩展 当一个package扩展自  + Y" C! @$ R% i" e
  166.         另一个package时该package会在本身配置的基础上加入扩展的package  
    - C/ K' i; J# ^+ z  h, R$ l
  167.         的配置 父package必须在子package前配置   
    9 c6 |( H7 @8 {- E  g
  168.         name:package名称  
    3 t+ _: j; D/ H$ y
  169.         extends:继承的父package名称  
    7 @9 C& ~6 W# @, P+ ^; _
  170.         abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false    n2 m) |- ~1 G& z, T
  171.         namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action    v4 a. o; x2 w; [  H; f
  172.      -->  
    & y. ^; _8 i( h
  173.     <package name="com.kay.struts2" extends="struts-default" namespace="/test">  * }' ]( O% N: z9 ]2 c5 K! O
  174.         <interceptors>  
    - f2 d) l; W1 J+ N! G
  175.             <!-- 定义拦截器   
    * |" z, @5 z. u( Z) P  m' T
  176.                 name:拦截器名称  
    " A: x* @$ T! a) H; O
  177.                 class:拦截器类路径  
    2 L# L# E% z6 N7 V0 q0 d1 P( O, W( s
  178.              -->  5 s. T# d) m4 i7 p( O4 z
  179.             <interceptor name="timer" class="com.kay.timer"></interceptor>  
    5 E& I0 i) j2 V8 `7 z
  180.             <interceptor name="logger" class="com.kay.logger"></interceptor>  9 s) j) L0 H+ K
  181.             <!-- 定义拦截器栈 -->  2 l, [* ^! H. T$ y& P- x
  182.             <interceptor-stack name="mystack">  ' w( I' b2 G  V/ v
  183.                 <interceptor-ref name="timer"></interceptor-ref>  
    ; F& o$ C: w1 x: Z
  184.                 <interceptor-ref name="logger"></interceptor-ref>  , g( ^0 Q+ i) F
  185.             </interceptor-stack>  
    " G  Z! F  D9 H8 X( G0 G
  186.         </interceptors>  6 ?: G1 ]# s0 R. C: |) E6 Y
  187.           8 ^  i6 V# C% {) O8 J0 v! F
  188.         <!-- 定义默认的拦截器 每个Action都会自动引用  
    % L1 o7 x% L$ _* i$ r3 f, K1 E% _
  189.          如果Action中引用了其它的拦截器 默认的拦截器将无效 -->  9 C1 j+ B. o4 r5 A# c/ l3 m
  190.         <default-interceptor-ref name="mystack"></default-interceptor-ref>  ) u" h$ r+ \( Q
  191.           * v! I$ G2 K' g4 l
  192.           $ y% b' }0 _9 O# R/ Y0 V. u0 B
  193.         <!-- 全局results配置 -->  ) ~5 h: G2 k" o" L4 n
  194.         <global-results>  
    1 s+ n* F; T! }& |2 k: M
  195.             <result name="input">/error.jsp</result>  
    : [' t7 N3 ?4 h. v2 {0 f% q  X
  196.         </global-results>  8 t0 U1 {' s) U& B8 s
  197.           : W* S: ~2 x( q5 d
  198.         <!-- Action配置 一个Action可以被多次映射(只要action配置中的name不同)  2 J* j2 Z/ S4 l* }" g
  199.              name:action名称  4 N; o, `' E8 n  G8 ~0 C
  200.              class: 对应的类的路径  
    & w/ w) x" X# k. i$ _# h
  201.              method: 调用Action中的方法名  
    ; `# B; D7 W2 }6 ~
  202.         -->  
    6 p6 x9 ^9 j! p
  203.         <action name="hello" class="com.kay.struts2.Action.LoginAction">  
    3 c; D! f; D4 h
  204.             <!-- 引用拦截器  9 ^. y; W& x. [" }' `& q* f
  205.                 name:拦截器名称或拦截器栈名称  
    - `3 X- l- R! W; ~3 }! c& b* d) t
  206.              -->  % d) t# ?/ u. s+ K5 o  a$ G
  207.             <interceptor-ref name="timer"></interceptor-ref>  
    & u3 o% p* a2 _" E( d3 p& }9 l
  208.           7 v$ P5 Y7 w; Y/ |
  209.             <!-- 节点配置  
    % N: N2 }* }6 \
  210.                 name : result名称 和Action中返回的值相同  
    # d1 h) U# Y7 }" k- _6 k3 U3 r
  211.                 type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher  
    1 y7 @# h7 \8 C3 a* Y- `7 E
  212.              -->  
    ' L& W/ i- T' ]* p! B& }
  213.          <result name="success" type="dispatcher">/talk.jsp</result>  
    ) Q! W9 o8 {3 D+ g  X, L
  214.          <!-- 参数设置   ! R7 e! t! k7 g) ~+ G
  215.              name:对应Action中的get/set方法   
    ) q+ X# A. O) h
  216.          -->  
    : T  L3 q; ^& R/ E/ P
  217.          <param name="url">http://www.sina.com</param>  . ?* a! B* J0 _, {6 N6 b
  218.         </action>  9 Q& v* K8 Z$ g: F4 t
  219.     </package>  3 R! c2 o6 b5 |) g
  220. </struts></b></font></font></font>
复制代码
这些是常用的struts配置文件常量,如果想把struts用好,就要懂得每个配置是怎么一回事.不光光需要学习技术,更要学习好理论知识.技术的高度是由理论知识的深度决定的.
: e" a5 k9 x) H" m
0 M, y0 }" L4 q, Z

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表