TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
大家都知道springMvc 都有注解配置 实现请求方式比如:9 h% F9 b' ?' _" W6 n/ C9 n
@RequestMapping(value = "/index", method = RequestMethod.GET)
* V) N4 n9 k+ B3 p! i; O这样的话 用户只能发送get请求。
$ h+ e& J& z4 g: G但是struts2 大多是基于配置实现的、注解的方式用的很少、下面通过struts2实现Http只允许POST请求。
" }; t6 _* F9 M4 g2 w$ b1 ]( }5 g
注解 RequestTypeAnnotation:- @Target({ElementType.PARAMETER, ElementType.METHOD})
& ]' k: d: g7 y: k" B - @Retention(RetentionPolicy.RUNTIME)
; n& v6 P8 P. [0 s - @Documented
9 d2 n2 I; g4 c5 O; {/ K - public @interface RequestTypeAnnotation {
9 C! q# |! U. ?; J# n; G& k - RequestType value();' a0 x' X7 P* C) |0 F- x7 R4 F
- public enum RequestType {) K7 p/ k' S2 n7 I: N5 }
- /**
3 J) Z9 e* Y5 I5 P# B" p& _/ C+ j - * post方式的http请求. f9 {1 D: Q& R3 D
- */7 ?. P4 r' j8 y: Z0 Y% g
- POST,* Q d" W8 z% Z; ] v
- /** W3 ]6 T% W' S
- * get方式的http请求
9 Z! r5 w6 L& T2 U5 F) V* S( \ - */
, Z- p+ V( t+ Q; Z: y - GET' i6 L, t% n0 [ D& y4 `
- }; L a) A: f! ?2 ?& X, o
- }
复制代码 拦截器 RequestTypeInterceptor:- /**
! S; ~8 f! l+ Q r, ?4 w {& k - * 拦截器
7 ~" F' P. i8 ?* j1 m" H# e - * 创建者 张志朋9 C6 W* @, g5 @$ i- |. y9 O+ K
- * 创建时间 2016年1月5日
" w0 E+ n V1 |; c! S) t0 E. A2 |1 ` - *
1 d$ m6 h3 i$ A( G2 f! Q, w7 J - */1 T3 v! F' k s) }# R2 M* X
- public class RequestTypeInterceptor extends AbstractInterceptor {
2 o' Y9 i7 d s& H! d4 g- @ - private static final long serialVersionUID = -4204585527913002611L;
7 N' r0 ^ x" {; \8 j# W7 ?; q
1 @8 |) k/ v# {0 h+ t- z1 Y- public String intercept(ActionInvocation invocation) throws Exception {
+ w8 e" r2 _0 K6 k
% b: B" m' q- V( A2 k! F- Action action = (Action) invocation.getAction();, I b, N" C6 F
- try {
! a2 n7 P6 J4 G8 X - Method method = action.getClass().getMethod(invocation.getProxy().getMethod(), new Class[] {});9 V$ g0 ]# H, P! K. M, ?
- Annotation[] annotations = method.getAnnotations();: X, t7 H4 ~( H0 x7 F
- String methodName = ServletActionContext.getRequest().getMethod();5 j3 _7 s/ }2 a" B, o6 j
- for (Annotation annotation : annotations) {* V7 D3 O6 @5 O; |- R
- if (annotation instanceof RequestTypeAnnotation) {
, f. |& \4 L. ?0 s - RequestTypeAnnotation reqTypeAnnotation = (RequestTypeAnnotation) annotation;' J; p) E$ W( S, H( ~3 G4 h
- if (!reqTypeAnnotation.value().name().equalsIgnoreCase(methodName)) {# J) \; R i3 y0 }' L5 N
- return "input";4 Z; \& d7 W; P% u, l; k
- }
# M& w9 c9 ^7 ]5 Z! Z+ S - }
, L! @! I" k: c) f1 H' e& y6 e& m - }8 s+ t0 N7 N2 f' b; \) f# w
- } catch (Exception e) {5 z+ e) P v. [: {$ E- {
- return "error";
2 }7 R) M+ n5 ^: [% G8 q' M2 C# I - }0 G8 L* D2 A' T( \
- return invocation.invoke();( I% o- q7 N& r! j3 m& O8 @" Q
- }: c) Q2 z( |; S
- }
复制代码 请求 WelcomeAction:, S- c. m) B. i$ E
- /**9 A! @% P O6 D/ A( x, I# m5 H% U! D
- * 测试action
2 q* [- o6 }: \% S7 }- A$ k& U" o& l7 k - * 创建者 张志朋
* W. W$ y% a" V V" l! t. x- X - * 创建时间 2016年1月5日/ \' q$ Q: K% j# i9 p. n
- *
+ ?7 }2 W4 Z5 j; N - */* Q8 h& w9 k' U' J+ k1 k/ ]
- public class WelcomeAction extends ActionSupport {$ ~8 i, I; v z9 V
- private static final long serialVersionUID = 752609025281512627L;9 A! p4 M; o, S! j V' c
- private String message;2 m+ l3 x9 d2 \' l7 y7 P8 E& O
- @RequestTypeAnnotation(RequestType.POST)2 ?) S6 w- s/ }6 R$ v
- public String execute(){
: v2 q: l, g* y - message = "只接受post请求";6 s4 @+ N, I& n" P
- return SUCCESS;" @# n4 \5 j1 j9 S5 N& G5 w, Y
- }
/ r/ ]- [& S+ Y. {7 W( l - /**
% s; Z5 ]8 } M. j& E - * @return the message, u/ b3 P1 U: H t2 O# Q# e
- */6 y: Q. U/ X+ D* z. s: \! o" n: ]
- public String getMessage() {
+ X* ]; I3 c% K7 c - return message;
% g' L F6 y8 P! I - }
3 S0 ^! @8 H. k7 q! m( f u, } - /**1 l6 Z/ s- O( b$ r4 z. D
- * @param message the message to set
; H; J1 d( K* R - */
" k0 D0 n5 s$ m# F - public void setMessage(String message) {
; l3 w: P# \! u& S, O2 k0 e - this.message = message;. l! J' q& ?6 {6 A) I' G9 P5 ]1 d
- }
) L1 }' o. @5 I4 B* ?6 b/ \" f9 }, Y - }
复制代码
" v# z! l% [: ~ b* j2 A( Bstruts.xml配置:- <struts>
, v7 A' r+ y; b: U" O6 @6 U0 R - <constant name="struts.devMode" value="false" />
5 a# c5 R0 I, ]( R+ n - <constant name="struts.i18n.encoding" value="UTF-8" />- j; j! K0 C Z0 v' R! v6 c4 v: x
- <constant name="struts.action.extension" value="action"></constant>1 G! x" C2 ~7 t6 ]. i0 E8 s
- <package name="web01" extends="json-default">
6 m* @' k5 ]5 G - <interceptors>$ g# z+ X2 e4 l3 Z2 ~6 _5 S( Y
- <interceptor name="requestType" class="itstyle.interceptor.RequestTypeInterceptor"></interceptor> ; p8 {- ^" l8 t3 }" Z$ ?
- </interceptors>
. ]+ d$ j9 Z2 M2 D$ p) c4 `$ s - <action name="welcome" class="itstyle.action.WelcomeAction">
: t% o' W N1 n/ f' b - <result name="success" type="json">' z$ u4 s1 m& O- @
- <param name="root">message</param>5 n& q3 R; y+ n! s
- </result>6 y, @/ r2 T0 |4 X( A7 C3 \7 t" v
- <result name="input">/error.jsp</result>
: U$ G! i4 l* e7 W5 f( B - <interceptor-ref name="defaultStack"></interceptor-ref> ' q% P2 C s0 d/ m6 k+ k# j+ }
- <interceptor-ref name="requestType"></interceptor-ref> ( L& R* S1 ?) b& m* `8 y+ a: u3 N
- </action>! D4 ?$ k- |2 E. b
- </package>" H" M6 ^# x$ q& M! h* A
- </struts>
复制代码 # d5 [7 x( Y; D) P, o
项目源码下载地址: 注解实现struts2 action 只接受post请求0 h4 g8 U& E$ \/ T# r) k
- E) A: @- y1 D! X提取码:
2 d( U7 C$ P, q2 o6 A* n+ j) ~4 a$ v9 [6 x7 g
8 e* l- t/ n. e1 m- j/ S N |
|