springMVC--入门程序

springMVC入门程序

1、创建一个javaweb工程

 
 
 

2、导入spring的jar包

 

3、配置DispatcherServlet核心分发器(web.xml)

在web.xml配置前端控制器:DispatcherServlet:

 

 <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- 默认加载方式
  	   默认加载必须规范:
  	   * 文件命名:servlet-name-servlet.xml====springmvc-servlet.xml
  	   * 路径规范:必须在WEB-INF目录下面
   -->
   <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:springmvc.xml</param-value>   
   </init-param>
  </servlet>
 
  <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
 

 

说明:/和/*的区别

可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL

弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。想实现REST风格,事情就是麻烦一些。后面有解决办法还算简单。

拦截/*,这是一个错误的方式,请求可以走到Action中,但转到jsp时再次被拦截,不能访问到jsp

 

4、配置handlerMapping映射器

springmvc.xml:
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.1.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.1.xsd ">

	<!-- 处理器映射器 -->
<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->
<!-- 这是一个默认的映射处理器,即使不配置,那么也是默认就是这个 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

5、配置handlerAdapter适配器

在springmvc.xml中添加:
//注意:这个适配器不是必须配置的,这是默认的、他在servlet容器已启动就被加载。
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>

6、编写一个controller类

public class TestController implements Controller{
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,			
			HttpServletResponse response) throws Exception {
		/**
		* 1.收集参数、验证参数
		* 2.绑定参数到命令对象
		* 3.将命令对象传入业务对象进行处理
		* 4.选择视图
		*/
		ModelAndView mv = new ModelAndView();
		//添加模型数据,那么这个数据可以是任意的POJO对象。
		mv.addObject("hello","hello world!!");
		
		//返回物理视图
		//mv.setViewName("/WEB-INF/jsps/index.jsp");
		//返回逻辑视图
//		mv.setViewName("index");
				
		//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图界面
		mv.setViewName("/WEB-INF/jsps/hello.jsp");
		return mv;
}	

7、配置自定义控制器

在springmvc.xml中添加:
<!-- 配置自定义controller ,使用beanName:name=”/hello.do”进行进行请求映射匹配-->
<bean name="/hello.do" class="cn.hcx.test.TestController"></bean>
 

8、定义一个响应页面

<body>
	${hello } <br>
</body>

9、配置视图解析器

使用视图解析器解析逻辑视图,这样更方便,易于扩展。

配置sprigmvc视图解析器:解析逻辑试图 
后台返回逻辑试图:index
视图解析器解析出真正物理视图:前缀+逻辑试图+后缀====/WEB-INF/jsps/index.jsp

在springmvc.xml中添加:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--逻辑视图前缀-->
<property name="prefix" value="/WEB-INF/jsps/"></property>
<!--逻辑视图后缀,匹配模式:前缀+逻辑视图+后缀,形成完整路径名-->
<property name="suffix" value=".jsp"></property> 
最终springmvc.xml中所有项:
 
 

10、访问

项目名+自定义controller的name属性的url
http://localhost:8080/springmvc/hello.do
 

11、分析程序执行流程

 
 

1、 首先用户发送请求http://localhost:9080/springmvc/hello——>web容器,web容器根据“/hello”路径映射到DispatcherServlet(url-pattern为/)进行处理;

2、 DispatcherServlet——>BeanNameUrlHandlerMapping进行请求到处理的映射,BeanNameUrlHandlerMapping将“/hello”路径直接映射到名字为“/hello”的Bean

进行处理,即HelloWorldController,BeanNameUrlHandlerMapping将其包装为HandlerExecutionChain(只包括HelloWorldController处理器,没有拦截器)

3、DispatcherServlet——>SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter将HandlerExecutionChain中的处理器(HelloWorldController)适配为SimpleControllerHandlerAdapter;

4、 SimpleControllerHandlerAdapter——> HelloWorldController处理器功能处理方法的调用,SimpleControllerHandlerAdapter将会调用处理器的handleRequest方法

进行功能处理,该处理方法返回一个ModelAndView给DispatcherServlet;

5、 hello(ModelAndView的逻辑视图名)——>InternalResourceViewResolver,InternalResourceViewResolver使用JstlView,具体视图页面在/WEB-INF/jsp/hello.jsp;

6、 JstlView(/WEB-INF/jsp/hello.jsp)——>渲染,将在处理器传入的模型数据(message=HelloWorld!)在视图中展示出来;

7、 返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。 

到此HelloWorld就完成了,我们主要进行了如下配置: 

1、 前端控制器DispatcherServlet;

2、 HandlerMapping

3、 HandlerAdapter

4、 ViewResolver

5、 处理器/页面控制器

6、 视图

适配器源码:

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值