-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path自学问题及笔记
84 lines (77 loc) · 4.15 KB
/
自学问题及笔记
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
记录:
1.各个版本的struts2的过滤器接入点不一样。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!--2.5版本的写法 -->
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
<!--2.3版本写法-->
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<!--2.23版本的写法 -->
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
2.struts.xml中默认的方法和返回值。
<!-- 默认方法是execute -->
<action name="hello" class="com.xiaogang.struts2.learn.action.HelloWorldAction" method="execute">
<!-- 默认的name是success,不写也是success -->
<result name="success">/pages/HelloWorld.jsp</result>
</action>
3.当struts.xml中action 的 name一样的情况下,默认执行下面的那个。
4.实现struts2 自定义拦截器的两种方式。
1:实现com.opensymphony.xwork2.interceptor.Interceptor接口.
2:继承com.opensymphony.xwork2.interceptor.AbstractInterceptor类.
<!-- 注册拦截器 -->
<interceptors>
<interceptor name="myinterceptor" class="com.xiaogang.struts2.learn.action.MyInterceptor" />
</interceptors>
<!-- 默认方法是execute -->
<action name="hello" class="com.xiaogang.struts2.learn.action.HelloWorldAction" method="execute">
<!-- 拦截器 -->
<interceptor-ref name="timer" />
<interceptor-ref name="params"/>
<interceptor-ref name="myinterceptor"/>
<!-- 默认的name是success,不写也是success -->
<result name="success">/pages/HelloWorld.jsp</result>
<result name="error">/pages/AccessDenied.jsp</result>
</action>
5.上传附件。
(1)如果要配置自定义的拦截器,比如大小,格式的时候。则必须用
<interceptor-ref name="defaultStack"/>
然后后面或前面再写上配置要求。
<interceptor-ref name="fileUpload">
<!-- 配置允许上传的文件类型,多个用","分隔 -->
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpg
</param>
<!-- 配置允许上传的文件大小,单位字节,默认为2M -->
<param name="maximumSize">102400</param>
</interceptor-ref>
(2)前台上传文件的name要与action里面的属性一致。struts2会自动获取文件名和文件类型,
前提是文件名与文件类型的属性,必须是name属性加上ContentType和FileName。
例如:
private File myFile;
private String myFileContentType;
private String myFileFileName;
6. 发送邮件。
注意发送的邮箱要开启POP3/SMTP服务。用获取的授权码当做密码。qq号当做用户名。
7.表单验证。
当用户按下提交按钮时,Struts2 将自动执行validate方法,如果方法中列出的任何if语句为真,Struts2 将调用addFieldError方法。
如果添加了任何错误信息,Struts2 将不会调用execute方法。否则,Struts2 框架将返回input作为调用操作的结果。
因此,当验证失败并且Struts2 返回input时,Struts2 框架将重新显示index.jsp文件。
由于我们使用Struts2 的form标签,Struts2 会自动在form字段上方添加错误信息。
问题:
1.因为默认的struts.xml是放在WEB-INF/classes下面的,怎么更改默认的位置。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
<!--2.5版本的写法 -->
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<!-- 更改默认的路径 -->
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,resources/struts.xml</param-value>
</init-param>
</filter>
2.默认的拦截器不起作用:params拦截器与 timer拦截器。