struts2初学的相关配置(struts.xml和web.xml)

Struts2框架

概述:1、Struts2框架应用于Java EE三层结构中的WEB层(视图层);

            2、Struts2框架在Struts1和webwork基础上发展的全新框架;

            3、WEB层中的其他框架(Spring MVC);

开发流程

        1、导入相关的jar包,可以从解压缩文件夹的apps目录下的例子中lib目录下复制过来;

        2、创建action,和访问servlet会执行service()方法一样,访问action默认都会执行execute()方法;

        3、配置action类的访问路径

                (1)创建struts2核心配置文件(名称和位置都需固定:名称struts.xml;位置:/src目录下);

                (2)引入约束,同样可以从例子里找到,约束名称struts-2.3.dtd;

                (3)配置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>
	
	<constant name="struts.i18n.encoding" value="UTF-8"></constant>
	<!--constant 是对常量的配置
		name和value分别是常量名和值
	 -->
	
	<package name="hellodemo" extends="struts-default" namespace="/">
	<!--package相当于代码包,区分不同的action,必须先写package标签才能配置action标签 
		name 属性:该属性值与功能本身没有关系,多个package名称不能相同
		extends属性:属性值是固定的struts-default,有该属性之后,package中的action才能具有action的功能
		namespace属性:该属性值和action标签中的name值,共同构成了action的访问路径
	-->
		<action name="hello" class="cn.itcast.action.HelloAction" >
		<!--action 配置访问路径
			name属性:package标签中的namespace和该name属性值,共同构成了action的访问路径
			class属性:该属性值为该action的全路径
			method属性:如在action里面默认执行execute()方法,但是在action里还写了其他的方法,
					为了执行多个方法,使用method属性进行配置	
		  -->
			<result name="ok" type="">/hello.jsp</result>
			<!-- result 根据action方法的返回值,配置到不同的路径里面
				name属性:是action方法的返回值,类型必须一致
				type属性:配置采用何种方法到路径中(做转发还是重定向),默认值为转发
				标签中间填的是相对于该apps根的路径值
			-->	
		</action>
	</package>
	
<!-- 	<!-- 11111以下的是多个方法使用多个action标签来进行不同method方法的配置 代码重复比较多 -->
	<package name="methoddemo" extends="struts-default" namespace="/">
		<action name="addAction" class="cn.itcast.method.BookAction" method="add"></action>
		<action name="updateAction" class="cn.itcast.method.BookAction" method="update"></action>
	</package> -->
	
	<!-- 22222以下使用通配符的方法实现访问不同method的操作 -->
	<package name="methoddemo" extends="struts-default" namespace="/">
		<!-- name属性值中写*星号
			(1)执行action里面的add方法,访问book_add,使用book_*匹配到,相当于method的值变成add
			(2)执行action里面的update方法,访问book_update,使用book_*匹配到,相当于method的值变成update
			上面的两个路径,使用book_*  都可以匹配到,为了将*号值取出,method属性值做{1}
		 -->
		<action name="book_*" class="cn.itcast.method.BookAction" method="{1}"></action>	
	</package>
	
	<!-- 33333使用动态访问实现访问不同method的操作 -->
<!--	首先开启一个DynamicMethodInvocation常量,然后再写。。。。一般不用
			 
	<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
	
	<package name="methoddemo" extends="struts-default" namespace="/">
		<a。。。。。。。。。。。。。。。。。。。></a>
	</package> -->
	
	<!--  <include file="cn/itcast/*.xml"></include>  -->
	<!-- 将相关的配置文件引入到核心配置文件中,分模块开发是可以使用 -->

</struts>

        4、配置web.xml文件中的filter(过滤器)

    <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>
服务器启动的时候就会加载web.xml文件,执行init()方法


常用常量的修改

        struts.i18n.encoding=utf-8(最常用的)

        注意:1、表单提交数据到action里,在action可以获得表单提取数据;

                  2、表单提交数据有中文,会产生乱码的问题,post提交直接设编码,get提交做编码转换;

                  3、如是在action中提取的表单是通过post方式提交的,中文乱码问题struts会直接帮助解决;


分模块开发:

          开发组中每个人单独开发写的配置文件,可不用写着核心配置文件struts.xml中,可以单独写配置文件,之后在struts.xml文件中使用<include>标签引入即可;


三种action编写方式

            (1)创建普通的类,不继承任何父类,不实现任何接口;

            (2)创建类,实现Action接口(implements Action);

            (3)创建类,继承ActionSupport类(extends ActionSupport)(该类本身也实现了Action接口)。


访问action中的方法method()三种方式(详细可见struts.xml的代码)

            (1)多个方法使用多个action标签来进行不同method方法的配置 代码重复比较多;

            (2)使用通配符的方法实现访问不同method的操作;

            (3)使用动态访问实现访问不同method的操作



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值