×

dispatcherservlet dispatcherServlet报错

前端技术网 前端技术网 发表于2023-12-31 19:33:48 浏览2741 评论0

抢沙发发表评论

一、springmvc原理及流程

第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找

dispatcherservlet dispatcherServlet报错

第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

第五步:处理器适配器去执行Handler

第六步:Handler执行完给处理器适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

dispatcherservlet dispatcherServlet报错

第九步:视图解析器像前端控制器返回View

第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

二、spring mvc流程详解

1、首先创建父容器(AnnotationConfigWebApplicationContext),通过自定义的getRootConfigClasses()拿到配置类,并注册到父容器中。

2、通过父容器作为参数创建ContextLoaderListener监听器。并添加到servletContext(Tomcatservlet容器)。

3、通过自定的getServletConfigClasses()方法拿到MVC的配置类创建子容器,并把配置类注册到子容器中。

4、创建DispatcherServlet,并将DispatcherServlet添加到servletContext的Servlet容器中去。

5、设置dispatcherServlet相关属性(启动时加载,设置映射路径)。

三、servlet响应顾客请求的方法

?servlet响应请求的方法有以下几种:

1、直接处理:

req.setAttribute("key","value");

2、请求转发:

req.getRequestDispatcher(uri/servlet别名).forword(req,resp);

特点:发一次请求,浏览器的地址不变;可以将一次请求的数据传递个下个servlet,通过req.setAttribute();

刷新页面的时候,请求重复发送,会导致表单数据重复提交;

3、请求重定向:

response.sendRedirect(uri);

特点:发2次请求,浏览器的地址改变成第二个servlet的;

解决了页面刷新导致表单数据重复提交的问题;

无法将第一个的请求数据给第二个请求使用,需要配合cookie、session技术实现数据共享

四、如何得到RequestDispatcher对象

参数的由来:在转发时,需要向下一个页面传递信息,所有信息在request和response中,所以需要这两个参数。请求转发的用法:

1、request.getRequestDispatcher()方法只是获取到了RequestDispatcher()对象,并未执行真正的转发,执行转发动作还需调用RequestDispatcher()的forward()。

2、forward()方法的声明与doGet()方法和doPost()方法非常类似,在转发时,其将request与response作为参数传递到了下一个Servlet。

dispatcherservlet和dispatcherServlet报错的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!