springMVC --(讲解1)介绍

断了今生、忘了曾经 提交于 2019-12-04 05:18:48

springMVC处理请求流程
1.客户端发起一个http请求
2.该请求被springMVC的DispacherServlet(控制器)进行拦截匹配,匹配到了委托给HandleRequest(处理器)
3.处理器会调用HandlerMapping与HandlerAdapter两个类,起一个映射作用,映射到Controller中的方法上。
4.一旦映射到,就执行Controller中该路径对应的方法。
5.Controller层只是起控制作用,实际的业务交给Service的实现层处理。
6.实现层处理完业务,将结果返回给处理器,返回一个叫modAndView的对象,控制器会调用一个视图渲染器(传参:model),视图渲染器会返回给控制器所需要的格式数据(jsp、json等)。
6.控制器直接将格式数据返回给请求端。
示例1
web.xml配置

	<!-- 工程映射 -->
	<servlet>
		<servlet-name>ssm</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring-config.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>ssm</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

spring-config.xml是mvc的配置文件

	<!-- 扫描包 -->
	<context:component-scan base-package="com.test.spring"></context:component-scan>
	<!-- 视图渲染器 -->
	<bean id="viewResolver"  class="org.springframework.web.servlet.view.UrlBasedViewResolver">
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

controller配置

	/**
	 * 测试mvc
	 */
	@RequestMapping(value="/hello",method= RequestMethod.GET)
	public ModelAndView hello(HttpServletRequest req,HttpServletResponse resp){
		ModelAndView mav = new ModelAndView();
		//封装要显示的视图中的数据
		mav.addObject("msg","hello springmvc");
		//视图名,该视图是/WEB-INF/jsp/hello.jsp
		mav.setViewName("hello");
		return mav;
	}

/WEB-INF下新建jsp文件夹,在jsp下新建hello.jsp

<html>
<body>
<h2>Hello World!</h2>
<h4>${msg}</h4>
</body>
</html>

注意:在如上web.xml中,如果配置成这样的话

<url-pattern>/*</url-pattern>

在请求的时候会出现如下错误

Did not find handler method for [/WEB-INF/jsp/hello.jsp]
No mapping found for HTTP request with URI [/ssm/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'ssm'
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!