Structs个人适用知识整理
2016-11-24 21:56
239 查看
structs主要模块由过滤器,拦截器,structs核心模块以及用户功能模块组成。
1. 一个客户端向服务器发送httpservletRequst请求时,例如发送http://localhost:8080/login.action请求,提交到服务器
2. 请求通过一系列的过滤器,例如ActionContextCleanUp-->OtherFilter--> DispatcherFilter,且用户可以根据需求自定义自己的filter,
例如在web.xml中
....
<filter>
<filter-name>checkLogin</filter-name>
<filter-class>com.myproject.checkLogin</filter-class>
</filter>
<filter-mapping>
<filter-name>checkLogin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
......
checkLogin.java
public class checkLogin implements Filter(){
public void init(){
}
public void destroy{
}
public void doFilter(HttpServletRequest request,HttpServletResponse response, FilterChain filterChain) throws Exception {
Session session = request.getSession();
String userName = session.getAttribute("userName");
if (userName == null || userName.equals("")){
response.sendRedirect("login.action");
}else{
filterChain.doFilter(request,response);
}
}
}
3. FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个HttpServletRequst,如果ActionMapper决定调用某个Action,FilterDispacther交给ActionProxy来处理。
4. ActionProxy通过Configuration manager 查询配置文件,找到需要调用的Action类
5. ActionProxy实例化ActionInvocation,同时,ActionInvocation通过代理调用Action,并在调用action之前,会调用所有interceptors,只有在调用action的时候才会加载interceptor,否则例如访问localhost:8080/null.action,而structs.xml中并没有null的action,页面跳出404,而interceptor也不会被加载,所以,想对无效url进行更正只能在filter中
Inteceptor可用于数据正确性验证,例如在structs.xml中写入
<package name="structs2" namespace="/" extension="default-structs" >
<interceptors>
<!-- 拦截postData.action -->
<interceptor name="postData" class="com.myproject.checkData"></interceptor>
<interceptor-stack name="myStack" >
<interceptor-ref name="defaultStack" />
<interceptor-ref name="postData" />
</interceptor-stack>
</interceptors>
<default interceptor-ref name="myStack" />
<global-results>
<result name="result" type="redirect" >/loginSuccess.jsp</result>
<result name="fail" type="redirect"> /loginFail.jsp</result>
</global-results>
</package>
com.myproject.checkData.java
public class dataCheck extends AbstractInterceptor{
public String Interceptor(ActionInvocation arg0){
return "result";
}
}
6. Action执行完毕,则返回result, ActionInvocation根据result在structs.xml找到对应的返回类型和数据。
相关文章推荐
- 整理:个人知识管理相关链接
- 整理:个人知识管理相关链接
- ||OC||OC语言基础知识框架结构//个人整理使用|仅供参考|尚未整理完
- C++知识碎片整理(5)——个人文件工具类
- 黑马程序员-java Exception异常个人知识整理
- C#部分知识个人整理
- ||C||<基础>C语言基础知识框架结构//个人整理使用|仅供参考|
- 个人知识整理
- 个人知识文档分类整理 20110905
- 改进我个人知识管理手段
- 高数个人资料整理
- iOS个人整理35-即时通信1 XMPP openfire 登录注册
- 个人整理git的基本用法
- 黑马程序员——Objective-C语言知识整理——匿名类与self/super关键字
- 整理下最近写java一个小界面程序的知识整理
- 变量作用域和定时器——Javascript 进阶知识整理
- JavaEE知识整理系列(八)Web Service
- SqlServer 基础知识大整理(强烈推荐之四)
- 《你的知识需要管理》序:五步打造个人知识力
- [摘]PKM:个人知识管理