struts 笔记 action namespace

struts 笔记 action namespace_第1张图片

Struts请求处理流程

请求先被struts过滤器拦截下来,然后在struts中做处理,如果处理中未发现请求的地址,再发回tomcat服务器 tomcat处理


自定义action

给在struts.xml中 action类添加class属性,指定处理的类,默认会调用这个类的execute方法,这个类可以是一个普通的java类。

如果不配置class,默认的用actionSupport来处理。

还可以实现action接口来定义一个action实现类,不经常用。

如果想运行自定义方法而不是execute方法,那么直接可以在action定义该方法,这个方法,的返回值是String类型,修饰字符串类型public

如果返回字符串是’xxx’ ,那么struts会在该action中寻找,resultname’xxx’,如果没有,会有错误。

action 中配置method 属性 ,指定调用方法。

struts2中每次请求都会创建一个action对象,所以不存在线程安全问题。


DMI 动态方法调用

用于开发或者企业内部软件使用,因为很容易就会让人发现是用struts,所以一般外部不用。

struts.xml 配置

<constant name="struts.enable.DynamicMethodInvocation" value="true" />



通配符

<action name="*-*" class="struts.demo.DemoAction">
      <result name="{1}">/{2}.jsp</result>
</action>


这里的*会按顺序替换{1},{2},例如,请求的action user-input

{1}user {2}input 减少result的配置


NameSpace

Namespace决定了访问路径,默认为””,可以接受所有路径的action

Struts请求action默认带后缀名action,可以不写。

Namespcce可以写为”/”, ”/xxx”,”/xxx/yy”,对应的action访问路径为/index.action.

Namespace一般用模块来进行命名

Package 标签的作用和java中的package作用一致,区分重复的情况,package的名字与namespace的名字一般是一致的,以模块的名称来命名


路径问题

Struts中,相对路径是从action算起,所以使用绝对路径。

JSP’/’的地址表示的是服务器根地址,不是应用根地址

绝对路径的获取

String  basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort + "/" + request.getContextPath() ;



你可能感兴趣的:(struts笔记)