SpringMVC

springMVC是一种基于Java实现的、WEB的MVC设计模式的、请求驱动类型的、轻量级的WEB框架。
1、springMVC使用了MVC的设计模式思想。
2、基于驱动请求,就是指使用了请求-响应的模式。
3、将WEB层进行了解耦。
springMVC的工作流程
浏览器发送一个请求给WEB服务器,由服务器来控制发送给哪一个servlet来进行处理。
在流程中的作用
springMVC中的前端控制器DispatcherServlet:又被成为中央处理器。负责接收请求进行响应。通过调用其他的组件控制整个流程的跳转。
处理器映射器:根据前端控制器转给的URL请求地址去查询handler处理器。
处理器适配器:前端控制器将根据URL查询到的结果发送给适配器去适配执行处理器。
处理器:(需要自己进行开发)controller。
视图解析器:对view信息进行解析。
在这里插入图片描述
过程(个人理解)

  1. 浏览器发出一个请求到前端控制器
  2. 前端控制器把请求信息的URL转给处理器映射器
  3. 处理器映射器根据接收的URL进行处理,将处理结果返回给前端控制器
  4. 前端控制器将查询到的结果转给处理器适配器。
  5. 适配器根据结果适配合适的时处理器
  6. 处理器将结果进行处理后返回ModelAndView数据给处理器适配器
  7. 处理器适配器再将处理器返回的数据返会给前端控制器
  8. 前端控制器再将ModelAndView数据转给视图解析器
  9. 视图解析器对View信息进行解析后将解析结果返回给前端控制器
  10. 前端控制器将得到的视图 信息进行数据渲染
  11. 最后前端控制器将渲染好的视图信息响应给浏览器
    程序的基础配置文件
    配置web.xml文件
    前端控制器
<servlet>
  	<servlet-name>springMVC</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 初始化信息 -->
  	<init-param>
  		<!-- springMVC的配置文件位置 -->
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springMVC.xml</param-value>
  	</init-param>
  	
  	<!-- 项目启动就会加载,填写加载顺序 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>

处理的请求
*.do:处理以.do结尾的请求。不会拦截静态资源
/:拦截所有请求。符合RESTFUL风格。会导致静态资源也会被拦截,而无法加载。
/*:错误写法。

  <servlet-mapping>
  	<servlet-name>springMVC</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>

编码过滤器的配置

<!-- 编码过滤器 -->
<filter>
 	<filter-name>EncodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>utf-8</param-value>
	</init-param>
 </filter>
 
 <filter-mapping>
 	<filter-name>EncodingFilter</filter-name>
 	<url-pattern>/*</url-pattern>
 </filter-mapping>

注意:前端控制器中的name要与处理请求中的name一致
springMVC配置文件

处理器映射器 HandlerMapping
功能:根据url查询处理器或者拦截器
BeanNameUrlHandlerMapping:把bean名字作为请求的url

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
</bean>

处理器适配器 HandlerAdapter
功能:配置处理器,执行处理器
SimpleControllerHandlerAdapter:对所有实现了controller接口的处理器进行适配

 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
 </bean>

视图解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>

在编写springMVC配置处理器映射器和处理器适配器时需要写两个<bean></bean>来配置,这里也可以使用注解驱动,它提供了支持注解开发的处理器映射器和处理器适配器,还提供了json之和和数据绑定支持。
注解开发的详情
@RequestMapping 里需要配置映射的路径,‘first’前面的‘/’可加可不加,后边的‘.do’可加可不加
@ RequestMapping 可以注解到方法上也可以注解到类上。当注解到类上时,表示该类的所有方法都将映射到配置属性的路径下
例:
注解的属性:
value:指的是请求的地址。是缺省的默认值。string[]支持多路径、传值
method:指请求的method类型。get、post。不配置method,代表支持所有请求类型。 method=RequestMethod.GET只支持get请求

@RequestMapping(value="first",method=RequestMethod.GET)
public ModelAndView first() {
	ModelAndView mv = new ModelAndView();
	mv.addObject("msg","注解开发的项目");
	mv.setViewName("user");
	return mv;
}

springMVC支持返回的类型
1、ModelAndView
2、返回类型为void:可以重定向或者转发。或者是设置响应类型。类似于原生的Servlet开发
3、返回字符串类型:返回字符串可作为逻辑视图的名,可实现重定向 redirect: ;可进行转发forward:
例:

// 重定向
@RequestMapping("third")
public String third() {
	return "redirect:/one/first.do";	
}
-------------------------------
// 转发
@RequestMapping("fourth")
public String fourth(HttpServletRequest request,HttpServletResponse response){
	request.setAttribute("msg", "转发数据");
	return "forward:/two/second.do";
}

4、返回map:异步开发的时候,会被转成json格式的

数据绑定
处理器适配器会在执行handle之前,把http请求的信息的数据绑定到handle方法的形参上。
默认支持的参数类型

HttpServletRequest:
HttpServletResponse:
HttpSession
Model:作用:将数据填充到request域中

简单数据类型的绑定
当请求中的参数名和处理器方法的参数名字一致时,会将请求中的参数数据与形参进行绑定
支持java基本数据类型:int、String、double、boolean等。
同时支持多参数。
@RequestParam :
value:绑定的传参的参数名
required:是否是必须传递的,默认值是true
defaultValue:设置默认值

@RequestMapping("third")
public String third(@RequestParam(value="ids",required=false,defaultValue="1")int id,String name){
	System.out.println("id:"+id);
	System.out.println("name:"+name);
	return "user";
}

简单的实体类对象类型的数据绑定(属性都是基本数据类型)
包装实体类对象类型
在jsp中的属性是一个对象时:在实体类中对象属性名.对象中的属性

<input type="text" name="car.carName">```


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值