A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wujianhui 中级黑马   /  2017-12-14 13:32  /  1230 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、struts简介
      struts时Apache软件基金会赞助的一个开源项目,最初只是jakartal项目的一个子项目。struts通过javaServlet/JSP技术,实现了基于javaEEWeb应用的MVC设计模式的应用框架,是MVC设计模式的一个经典产品。
      struts成立的目的是为了减少程序员开发的时间,项目的创建者认为原来JSP和servlet虽然可以帮助用户解决大部分的问题,但是编码对项目的开发产生了许多的不便,可重用性差,所以struts应运而生。struts框架提供了如下服务:
      (1)作为控制器的Servlet;
      (2)提供大量标签库;
      (3)提供来了用于国际化的框架,可以利用配置文件帮助用户选择适合自己国家的语言;
      (4)提供了jdbc的实现,可以定义数据库源和数据库连接池;
      (5)XML语言分析工具;
      (6)文件下载机制。
二、struts的配置文件struts.xml
       struts.xml是我们在使用struts框架进行开发最重要的配置文件,接下来对此配置文件中的常用标签进行介绍。
1.<constant>标签
     在struts框架中的struts.properties配置文件中定义的属性,在struts.xml文件就是通过<constant>标签进行配置的。
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "struts-2.3.dtd" >
<struts>
	<!-- 开发者模式 -->
	<constant name="struts.devMode" value="true"></constant> 
	<!-- 后缀的配置:演示配置文件的加载顺序 -->
	<constant name="struts.action.extension" value="do"></constant>
	<!--设置编码形式为GB2312-->  
    <constant name="struts.i18n.encoding" value="UTF-8"/> 
</struts>


2.<package>标签
     在struts框架中包来管理action、result、interceptor等配置信息,包的属性如下:
属性 是否必需 描述
name 包名,作为包的标识
extends 设置包继承其他包
namespace
命名空间
abstract是否设置为抽象包

   2.1关于extends属性的理解
    当一个包通过配置extends属性继承另外一个包时,这个包就会继承父包中所有的配置,包括action、result、interceptor等;由于包的信息的获取是按照配置文件的先后顺序进行的,所以父包需要在子包之前被定义,通常我们在配置struts.xml文件时,都会继承一个叫“struts-default.xml”的包,这是struts框架默认内置的包,只有继承这个包,才能使用struts框架的内置功能。
    2.2关于namespace属性的理解
    在开发项目时,一般都是分模块进行开发,为了解决项目中Action命名重复的问题,namespace产生了,它使得项目可以在不同的命名空间使用相同action名。
3.<action>与<result>标签
   我们可以通过下面两张表来理解两个标签的使用:
  3.1<action>属性介绍
属性是否必需 描述
name 请求的Action名称
classAction处理类的路径
method指定处理Action的方法
converter制定Action使用类型的转换器
注:<action>标签必需在<package>里面写,而没有指定method则默认执行Action中的execute方法。
  3.2<result>属性介绍
属性 是否必需描述
name对应Action返回逻辑视图名称,默认是success
type返回的结果类型,默认是dispatcher

例子:
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="p1" extends="struts-default">
		<action name="hello" class="cn.itcast.action.HelloAction" method="sayHello">
			<result name="success" type="dispatcher">/succ.jsp</result>
		</action>
	</package>
</struts>

4.<interceptors>标签
    通过此标签可以向struts框架中注册拦截器或者拦截器栈,一般多用于自定义的拦截器或拦截器栈的注册,使用方法如下:
[XML] 纯文本查看 复制代码
	<interceptors>  
    <interceptor name="拦截器名" class="拦截器类"/>  
    <interceptor-stack name="拦截器栈名">  
        <interceptor-ref name="拦截器名">  
    </interceptor-stack>  
</interceptors>

通过<interceptor>标签可以为其所在的Action添加拦截器功能。当为某个Action单独添加拦截器功能后,<default-interceptor-ref>中所指定的拦截器将不再对这个Action起作用。
5.<global-results>标签
   此标签主要可以设置包范围内的全局结果集,在项目中如果遇到多个Action返回相同的逻辑视图的情况下,可以通过此标签统一配置这些视图:
[AppleScript] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "struts-2.3.dtd" >
<struts>
	 <package name="default" extends="struts-default">  
        <global-results>  
            <result name="success">/success.jsp</result>  
            <result name="login">/login.jsp</result>  
            <result name="error">/error.jsp</result>  
        </global-results>  
    </package>  
</struts>


1 个回复

倒序浏览
已学习,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马