xiaojianhx 2009-05-05 13:25
浏览 438
已采纳

struts2和servlet的关系

以前用struts1的时候,了解到,jsp都是用request传值的,在struts2里没有看到,他们有什么关系啊?或则,struts2里用什么传值?怎么通过servlet实现跳转的?

  • 写回答

2条回答 默认 最新

  • starting0 2009-05-05 15:55
    关注

    在struts2.0中,可以通过ServletActionContext.getRequest()获取request对象。
    在action的方法中return一个字符串,该字符串对应struts.xml中的result标签的name相同,result标签中包含的就是跳转页面,
    其原理,我的理解是这样的:
    一.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action”
    二.请求被提交到一系列(主要是三层)的过滤器(Filter),如ActionContextCleanUp,FilterDispatcher等
    三.FilterDispatcher是控制器的核心,FilterDispatcher进行初始化并启用核心doFilter
    四.FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
    五、ActionProxy通过(struts.xml)询问框架的配置文件,找到需要调用的Action类.
    六、ActionProxy创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action。但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)

    ActionInvocation工作原理:
    1. ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。
    2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。
    3. 旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码