这里再次强调:
过滤器在我们的服务器启动的时候就会被加载创建。包括struts过滤器。在strtus2过滤器被创建加载的时候init就会加载很多配置文件,有我们自己配置的(struts.xml配置文件),和struts本身自带的一些配置文件。package标签:
相当于代码包,用于区别不同的action。要配置action,必须首先写package标签,在package里面才能配置actionname属性:
可以随便写,和功能无关,但是package之间的name属性不能够相同。extends属性:
表示继承的关系,属性值是固定的,struts-default写了这个属性之后,在package里面配置的类才具有action功能namespace属性:
这是命名空间,namespace属性值和action标签里面的属性值构成访问路径“”值和”/”值作用是一样的action标签:
action标签配置action访问路径name属性:
namespace属性值和action标签里面的属性值构成访问路径package标签里面可以写多个action标签,但是action的name属性值不能相同class属性:
这里是类的全路径,底层用的反射method属性:
里面表示class类的xx方法值就写方法名默认执行execute方法result标签:
根据action方法的返回值,配置到不同的路径里面,不仅是页面也可以是不同的action。值:/hello.jsp ,/表示当前项目name属性:
和方法的返回值一样type属性:
配置如何到路径中去(转发或者重定向)默认值为转发操作,转发后地址栏不会变修改struts2默认常量值
在struts.xml中进行配置<constant name="struts.i18n.encoding" value="UTF-8"/>//一般通过这种方法进行配置还有两种方式:
在src下面创建struts.PRoperties,进行修改web.xml中进行配置设置以上值只后起到的作用就是:
表单提交数据到action里面,在action可以获取表单提交数据。表单提交数据有中文,有乱码问题。以前我们在servlet中解决乱码的方式是:
Post提交数据直接设置编码get提交做编码转换如果在action获取表单通过post方式提交中文,中文乱码问题这样就能够解决,不需要自己处理问题。
分模块开发:
用xml中的include实现多人开发互不影响。<include file="">
file路径是src下的路径action共有三种编写方式
第一种 创建普通类,这个不继承任何类,不实现任何接口。第二种 创建类,实现接口Action(导入xwork里面的包)第三种 创建类,继承类 ActionSupport第二种:实现接口Action:
里面有很多常量,可以直接作返回值。这种方式一般很少去用。第三种:继承类 ActionSupport(ActionSupport已经实现了Action接口)
这种方法比较常用有三种方式实现:
第一种,使用action标签的method属性,在这个属性里面写执行的action方法。第二种,使用通配符方式实现,这个是最常使用的方法 动态访问实现(不用)第一种方法:使用method进行配置
method的值就直接写方法名称缺陷:action每个方法都需要配置,如果action里面有多个方法,就会配置很多的action。第二种方法:使用通配符的方式实现(常用)
在action标签里面有个name属性,name属性值里面,我们要写一个符号,叫*
号,这个*
号怎么理解呢??*
代表所有的意思,它能够匹配所有的字符串。注意,是所有。*
也可以和其它字符串组合,形成其它的模式匹配。当用*作匹配的时候,如果匹配成功,在method中,可以用{1}、{2}、{3}来把匹配成功的字符串取出来,和正则表达式差不多。也就是说我们可以这么写struts2配置<package name="FireLang" namespace="" extends="struts-default"> <action name="book_*" class="cn.domarvel.Book" method="{1}"> </action></package>理解:
这样来写时,当访问的值为book_add时,method获取到的值就是add,也就是能够调用Book类的add方法当访问的值为book_update时,method获取到的值就是update,也就是能够调用Book类的update方法这里的{1}的意思就是获取匹配到的第几个*号的值。注意事项:
在action里面的方法返回值,返回值可以是有也可以是没有,如果有返回值时,类型必须是String类型。有返回值时:
action有返回值时,如果在result标签中没有匹配到的时候,就会报result没有定义的错误。没有返回值时:
action没有返回值时,在result标签中不需要配置。没有返回值时,用户访问后,用户将看到空白页面的效果。如何才能没有返回值:
把方法写成void让返回值为”none”,也可以直接调用常量。新闻热点
疑难解答