struts2流程二 | 学习笔记

简介: 快速学习 struts2流程二,介绍了 struts2流程二系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门struts2流程二】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7290


struts2流程二

 

一、流程

设置 browser tomcatbrowser tomcet 发起一个请求(request),然后打开源码,当找不到源码时,点击 Attach Source,有两种办法,如果是文件夹就选择External Folder,如果是一个压缩文件就选择 Eternal File

打开 Action.class

public interface Action{

the action eecution was successful.show result

view to the end suer

public static final String SUCCESS = "success";

The action execution was successful but do not

show a view. This is useful for actions that are

* handling the view in another fashion like redirect.

public static final String NONE = "none" ;

/**

The action execution was a failure.

关联完之后找到 StrutsPrepareAndExecuteFilter.class

以断点启动,进入浏览器,

网址输入http://localhost:8080/03struts2_login/login.jsp,程序设置

if ( excludedPatterns != null && prepare .

isUrlExcluded(request

chain. doFilter( request, response);

}else {

request = prepare . wrapRequest(request);

ActionMapping mapping = prepare. findActi onMapping(request , 

if (mapping == null) {

boolean handled = execute. executeStaticResourceRequest

( !handled){

chain.dofilter(request,respose;

}

}else{

这时候 mapping null,是空的,表明请求的 action 找不到了,返回 json 界面就直接请求对应资源。

返回浏览器发送登录请求的时候,就进来了。

进来的过程是只要 browser 发送请求就给 tomcattomcat 创建 request()对象,创建 HttpServletRequest

tomcat 创建 request 对象()给 HttpServletResponsetomcat doFilter StrutsPrepareAndExecuteFilter,

public void doFilter( ServletRequest req, ServletResponse res, FilterCh

HttpServletRequest request = (HttpServletRequest) req ;

HttpServletResponse response = (HttpServletResponse) res;

try

prepare . setEncodingAndLocale(request, response);

prepare . createActionContext(request, response)

prepare. assignDispatcherToThread();

if ( excludedPatterns :!= null && prepare.

isUrlExcluded(requestchain. doF ilter(request, response);

else

request = prepare . wrapRequest (request);

ActionMapping mapping = prepare.

findActionMapping( request, .

if (mapping ==null)

boolean handled = execute. executeStatic ResourceRequest

if (!handled)

Expression 中增加 name request.getParameter(“pwd”),value 1111

过程中 StrutsPrepareAndExecuteFilte pepareOperations 进行 findActionMapping()prepareOperations 返回 ActionMapper()。

mapping 不等于 null 的时候,使用 executeAction 方法,下一步使用serviceAction()方法作用于 Disoatcher

String name = mapping. getName();

String method = mapping. getMethod();

Configuration config = configurationManager .

getConfiguration( )ActionProxy proxy = config.

getContainer() . getInstance( ActionPr

namespace,name, method, extraContext, true, false);

request . setAttribute( ServletActionContext . STRUTS_ VALUESTACK_ KE'

Dispather 通过 getconfiguration 作用于 configurationmanager

configurationmanager 通过 getinstance 作用于

defaultActionProxyFactory

public ActionProxy createActionProxy( ActionInvocation inv,

String name:

DefaultActionProxyproxy= new DefaultActionProxy(inv,

namespace ,

container . inject(proxy);proxy . prepare();

return proxy

defaultActionProxyFactory 通过 createActionProxy()作用于 DefaultActionProxy,根据 protected Configuration confi gurat ion;

protected ActionConfig config;

protected ActionInvocation invocation;

protected UnknownHandlerManager unknownHandlerManager;protected String actionName ;

protected String namespace;

protected String method;

DefaultActionProxyFactory 调用 ActionInvocation,由他来完成一系列处理。调用Result....

public DefaultActionInvocation(final Map<String, Object> extraContext, final boolean

pushActiDefaultActionInvocation. this. extraContext = extraContext;

DefaultActionInvocation. this . pushAction = pushAction;

@Inject

public void setUnknownHandl erManager

(UnknownHandlerManager unknownHandlerManager) fthis . unknownHandlerManager = unknownHandlerManager ;

@Inject

public void setValueStackFactory(ValueStackFactory fac) fthis. valueStackFactory = fac

结束这个程序之后,挨个进行返回

相关文章
|
开发框架 JSON 前端开发
SpringMVC的工作流程及入门
SpringMVC的工作流程及入门
104 0
|
XML 前端开发 Java
框架技术,Struts2入门配置
框架技术,Struts2入门配置
156 0
框架技术,Struts2入门配置
|
Java 应用服务中间件 容器
Struts2的工作原理解析
Struts2的工作原理解析
315 0
Struts2的工作原理解析
|
Java 应用服务中间件 开发者
Struts2流程一 | 学习笔记
快速学习 Struts2流程一,介绍了 Struts2流程一系统机制, 以及在实际应用过程中如何使用。
Struts2流程一 | 学习笔记
|
XML Java 数据格式
struts2+spring+mybatis整合小案例
最近学习ssm框架,模仿别人做了一个小案例 当然途中也遇到了蛮多的问题.借此机会.记录一下自己的过程 struts2+spring+mybatis的整合过程 1.说明: 个人采用的是deepin操作系统(深度linux)+Intellij Idea(相对与myeclipse我还是更喜欢idea 可能因为更智能)+tomcat7. 当然在windows下没什么不同,具
4278 0
|
XML Java 数据格式
Struts2框架的搭建
搭建一个struts2的框架,在之前已经搭建过struts的框架了,这里的流程基本上差不多,详见 struts1的搭建 首先到官网上下载jar包,这里附一个git的链接struts2jar包下载 新建工程,将下载的jar解压至工程中,项目结构如下: 项目结构 接下来编写struts.
972 0
|
Java
Struts2框架基础篇
首先,要了解Struts2框架中参数传递的大体流程: 服务器端的Web容器收到用户的请求(URL)——Struts2的核心控制器FilterDispatcher接受用户发起的请求,然后判断这个请求是交给action还是交给web组件来处理;如果请求的action或web组件不存在,就会报错404。在整个处理过程中,需要一个辅助对象: ActionMapper ,它会确定调用哪个Actio
1661 0