TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
大家都知道springMvc 都有注解配置 实现请求方式比如:) G, t7 |3 k- E+ N8 y& Q" M6 j
@RequestMapping(value = "/index", method = RequestMethod.GET)
0 c2 k0 F1 D H" r w P# V- M这样的话 用户只能发送get请求。
2 s$ ?& C/ M3 O( i, ^5 o但是struts2 大多是基于配置实现的、注解的方式用的很少、下面通过struts2实现Http只允许POST请求。
: t+ [2 y4 x# J/ u* w
o% a9 c7 i: S注解 RequestTypeAnnotation:- @Target({ElementType.PARAMETER, ElementType.METHOD}) / ?7 H0 o7 t- ^1 `7 D, q. ]
- @Retention(RetentionPolicy.RUNTIME)
( \1 e/ i+ c: S, Z6 O6 Q - @Documented
/ r3 C3 v& R% m z0 l; z - public @interface RequestTypeAnnotation {
# d9 p# q$ M/ Z9 u6 k1 C* s( T - RequestType value();/ o' m+ L/ B. D/ }# n6 ^: D. e0 K
- public enum RequestType {2 m* x. t2 q) ~2 k d' }0 Q
- /**2 y! l; v) J2 g; R! f2 r3 H
- * post方式的http请求
$ Q8 r0 n4 ]' D# S - */
) X" t+ A* W; D9 N; d - POST,- J1 B% s0 S5 N( P( |3 z/ F
- /**
3 I% g; R' n5 S3 G D" ` - * get方式的http请求) V3 w3 h+ S. B) ^5 p/ O
- */
. M& s: ^# M4 s$ A- C% ]0 p; t8 } - GET
; k( u- }" p W- U% j - }
! G5 V, d& V# g9 x3 e - }
复制代码 拦截器 RequestTypeInterceptor:- /**
0 O) j `9 J" u3 L) l: a2 d - * 拦截器) a( M1 p: G% R0 {! }
- * 创建者 张志朋
) Z; \( y& c: l0 Q- v( G( K: l( a - * 创建时间 2016年1月5日
2 ]( f) q: I5 x3 O H: X - *( c( B: E1 c' s+ }
- */
# v7 H( ^* k! M' ]8 o/ r8 F* @ - public class RequestTypeInterceptor extends AbstractInterceptor {, C5 E. _% d9 ?
- private static final long serialVersionUID = -4204585527913002611L;; C0 f% ~" K; k1 {9 v: d
- : P% h# Q. t% m' L. ~
- public String intercept(ActionInvocation invocation) throws Exception {
" `, Q- P2 A G+ e2 D& c( l - 7 s7 h2 Z. X6 L/ j; o( E
- Action action = (Action) invocation.getAction();
9 H4 d$ j- l/ n/ I% [% v - try {
S1 h! r9 p+ J6 i: K4 m5 m - Method method = action.getClass().getMethod(invocation.getProxy().getMethod(), new Class[] {});
' z' H% f4 r/ p9 L - Annotation[] annotations = method.getAnnotations();
! q% A+ a, B$ T M& ?+ w6 a - String methodName = ServletActionContext.getRequest().getMethod();2 R& Q7 }; B$ [3 `
- for (Annotation annotation : annotations) {
3 H" v9 H- L! L# G% F( B, C - if (annotation instanceof RequestTypeAnnotation) {
, _; { m8 u5 D# [ l" d - RequestTypeAnnotation reqTypeAnnotation = (RequestTypeAnnotation) annotation;! a) L. d P: o1 V- m( v9 S
- if (!reqTypeAnnotation.value().name().equalsIgnoreCase(methodName)) {
" U/ J4 Q$ v+ d. U' s1 }3 u5 t - return "input";% H1 h* ?$ a, F9 m) ?9 ?
- }3 j; H2 l! l" f2 p1 q$ l% v+ }
- }
- Z' m! Z6 H/ A7 d1 P! s2 { - }" t3 B9 y) e( V* ~* l: W8 ~
- } catch (Exception e) {$ x! q8 N5 ^6 q
- return "error";% W2 X, P+ } a2 I( i- }% U
- }( k! Q5 _0 R+ W) u5 k, H0 a k
- return invocation.invoke();
5 z l+ b' u, S$ J - }
( Z+ Z: N- s$ L6 t5 |' z - }
复制代码 请求 WelcomeAction:
2 t% [$ Z6 C& K. {# ^- /**# ]" L9 t" {. q- ?
- * 测试action
- w/ I8 L* `" {9 K0 V - * 创建者 张志朋& n: S7 [* _8 C' ]
- * 创建时间 2016年1月5日3 K9 Q+ z9 E, o5 `8 J( \ F7 `
- *
" I2 b9 |+ n/ [7 Y7 |4 | - */
. |: z2 H, ^' F" X. A0 H( _3 ^ - public class WelcomeAction extends ActionSupport {
" q; g; Y4 v! S" j' \, h - private static final long serialVersionUID = 752609025281512627L;# h2 n6 { E, f1 K$ \
- private String message;3 `$ S8 T8 ? i B+ h) f
- @RequestTypeAnnotation(RequestType.POST)
; V+ M5 B) ?8 @2 D$ \# @( s% O# Z - public String execute(){/ x5 H. c, Z) Z
- message = "只接受post请求";
! Z0 P0 u7 Z: p0 b9 L3 G - return SUCCESS;* n& a6 ^; V3 T; K
- }
3 B0 r$ N4 T% o+ ]/ K6 @: { - /**
/ H0 t9 c4 p# w - * @return the message" q9 M( a$ h& n. U3 d
- */
6 @9 {3 U* t6 J& @3 V. t; k - public String getMessage() {
" t% ^3 o" O' a& B. ^% {8 M - return message;' f$ C+ z. v) U: ^3 z) [
- }7 f4 {) `+ a6 v+ q8 ?. s8 H( \
- /*** ^8 t8 r9 ^5 S) ~
- * @param message the message to set5 ~' l7 c6 _: t! ]1 s7 Z, b3 {" f* Y
- */
3 [* ]9 P+ A9 [3 q- e2 Y - public void setMessage(String message) {
! I2 {* R% I5 |7 d" S% ^/ W - this.message = message;, H- Y2 c$ u. k/ K1 \" s! h: K4 {
- }
$ S: s6 }4 R. a2 U" R Z - }
复制代码 , U1 l1 u+ T. ~ {* d3 H
struts.xml配置:- <struts>
6 \3 X; f8 X8 m, }) j% H - <constant name="struts.devMode" value="false" />7 Q: D' B% n# H: {! t
- <constant name="struts.i18n.encoding" value="UTF-8" />* n$ j0 u2 p, l' y8 F' N+ e$ ]
- <constant name="struts.action.extension" value="action"></constant>
% H) B, c' Z" L2 e7 C - <package name="web01" extends="json-default">2 b& T; z% d1 Q8 p+ p
- <interceptors>4 t6 M2 Q. d! f5 u8 a
- <interceptor name="requestType" class="itstyle.interceptor.RequestTypeInterceptor"></interceptor>
7 a$ ~8 H# O2 n% J+ Y& X8 w) B - </interceptors>- O9 d5 K/ E/ \4 P% L4 q' K( t2 g; t
- <action name="welcome" class="itstyle.action.WelcomeAction">/ M* S% ?# p9 {' q* p& B0 j& W* K( A( s
- <result name="success" type="json">( u7 d: {2 s2 s" D% e
- <param name="root">message</param>; l% Z' }* `/ w
- </result>, n5 @3 r, R( j. z6 H
- <result name="input">/error.jsp</result>
1 |( J9 v9 h! `8 E - <interceptor-ref name="defaultStack"></interceptor-ref> ) I+ {2 |+ w/ ]; X
- <interceptor-ref name="requestType"></interceptor-ref> 7 o* r# E& m7 F4 I: o5 r
- </action>
V4 S- c( F' j9 H3 p* R- l - </package>
' c Q8 A: S) }# t* ]& U( H - </struts>
复制代码
4 V9 U( K* ~$ A1 {2 b' ? N项目源码下载地址: 注解实现struts2 action 只接受post请求
% S6 N* `7 q/ K. x2 U. P+ H
1 \/ p/ I# D( c$ X$ p3 P. _提取码:+ l7 P1 }0 q2 w2 k
9 J# U; P. ^4 V7 v2 n' n+ R; Z
; y3 V4 J$ L+ |1 n
|
|