springmvc-----笔记1

springmvc概述

  • spring为表示层提供的基于mvc设计理念的优秀web框架,是目前最主流的mvc框架之一。
  • springmvc通过一套mvc注解,让pojo成为处理请求的控制器,无需实现任何接口。
  • 支持rest风格的url请求
  • 步骤
    1、导入依赖
    2、在web.xml文件中配置 DispatcherServlet
    3、加入springmvc的配置文件
    4、编写处理请求的处理器,并标识为处理器
  • springmvc.xml配置文件
    1、配置扫描包:<context:component-scan bao-package=“com.my.controller”/>
    1.1、通过以上配置,springmvc可以通过注解@RequestMapping里面的value值获取到访问的路径
    2、配置视图解析器:把handler方法返回值解析为实际的物理视图,通过
    prefix + returnValu + 后缀 的方式得到实际的物理视图,再做转发
<bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>  <!--前缀-->
<property name="suffix" value=".jsp"/>			<!--后缀-->
</bean>
  • 使用 @RequestMapping 映射请求
    1、springmvc使用@RequestMapping注解为控制器指定可以处理那些URL请求
    在类和方法上面都可以标注
  • Ant风格资源地址支持3中匹配符:springmvc也支持这种风格
    1、?:代表匹配文件名中的一个字符
    2、*:任意字符
    3、**:**匹配多层路径
  • @PathVariable 映射URL绑定占位符
    可以将URL中占位符参数绑定到控制器处理方法的入参中:
@RequestMapping("/xxx/{id}")      //http:localhost:8080/xxx/1
public String test(@PathVariable("id") Integer id){
	system.out.println(id);
	return "redirect:/user/list.action";
}

REST

  • REST 即Representational State Transfer。表现层状态转化,是一种互联网软件架构
  • 转化状态:在HTTP协议里面,有四个表示操作方式的调用:
    1、GET 2、POST 3、PUT 4、DELETE
    GET代表获取资源
    POST代表新建资源
    PUT代表更新资源
    DELETE代表删除资源
  • 如何将post请求转为put或delete请求
    1、在web.xml文件中配置
<filter>
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<url-pattern>/*<url-pattern>
</filter-mapping>

2、表单内容

<form action="xx/xxx" method="post">
	<input type="hidden" name="_method" value="DELETE"/>
	<input type="submit" value="submit"/>
</form>
<!--若要转为put请求,则直接将hidden域中的value值改为put即可,但前面的内容不能变-->

3、接收方法

@RequestMapping(value="/xx",method=RequestMethod.DELETE)
public String test(){
	return "success";
}
  • @RequestParam 绑定请求参数值
    1、value:参数名
    2、required:是否必须。默认为true,表示请求参数中必须包含对应的参数,若不存在,将抛出异常
@RequestMapping("/xx")
public String test(@RequestParam(value="username",required=false) String username){
	return "success";
}
  • @RequestHeader 绑定请求报头的属性值
    请求头包含了若干个属性,服务器可据此获知客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中
@RequestMapping("/xx")
public String test(@RequestHeader("Accept-Encoding") String encoding,@RequestHeader("Keep-Alive") long keepAlive){
 return "success";
}
  • @CookieValue用法与上面一样
@RequestMapping("/xx")
public String test(@CookieValue("JSESSIONID")String sessionId){
 return "success";
}
  • 使用 POJO 对象绑定请求参数值
    springmvc会按请求参数名和pojo属性名进行自动匹配,自动为该对象填充属性值。支持级联属性
@RequestMapping("/xx")
public String test(User user){  //表单中的参数与User类中的属性值对应
 return "success";
}
  • MVC的Handler方法可以接受哪些ServletAPI类型的参数
    1、HttpServletRequest
    2、HttpServletResponse
    3、HttpSession
    4、java.security.Principal
    5、Locale
    6、InputStream
    7、OutpputStream
    8、Reader
    9、Writer

  • 处理模型数据,springmvc提供了四种方式:
    1、ModelAndView:返回值类型为ModelAndView
    2、Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.util.Map时,处理方法返回时,Map中的数据会自动添加到模型中
    3、@SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。 只能放在类上面
    4、@ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中

ModelAndView mv=new ModelAndView();
mv.addObject(String name,Object obj);	//添加模型数据
mv.setViewName(String name);	//设置视图
@RequestMapping("/xxx")
public String test(Map<String,Objec> map){	//也可以是Model或者ModelMap类型
	map.put("name",Arrays.asList("a","b"));
	return "success";
}
//JSP页面取值
${requestScope.name}
//@SessionAttribute除了可以通过属性名指定需要放到会话中的属性外,(使用的是value属性值)
//还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(使用的是type属性值:如 type=String.class)
@SessionAttribute(value={"user"},type={String.class})
@Controller
public class S{
	@RequestMapping("/xxx")
	public String test(Map<String,Object> map){
		User u=new User("a","b");
		map.put("user",u);	//value属性值
		map.put("shcool","aaa");	//type属性值
		return "success";
	}
}

//jsp页面获取值,若是类上面不加@SessionAttribute注解的话,session域中无法取到值
${requestScope.user}
${sessionScope.user}
${sessionScope.shchool}
//有@ModelAttribute标记的方法,会在每个目标方法执行之前被springmvc调用!!!
@ModelAttribute
public void test(@RequestParam(value="id"mrequired=false) Integer id,Map<String,Object> map){
	if(id!=null){
		//模拟从数据库中获取对象
		User u=new User(1,"tom",""123);
		map.put("user",u);  //注意此处的key的命名与下面方法的入参参数的命名,要一致
	}
}
/** 运行流程: 
 1、执行@ModelAttribute注解修饰的方法:从数据库中取出对象,把对象放入到Map中,键为user
 2、springmvc从Map中取出user对象,并把表单的请求参数赋值给该user对象的对应属性
 3、springmvc把上述对象传入目标方法的参数
 注意:在ModelAttribute修饰的方法中,放入到Map时的键需要和目标方法入参类型的第一个字母小写的字符串一致
 
*/
@RequestMapping("/xxx")
public String testModeAttribute(User user){//User 还可以用 ModelAttribute来修饰
	System.out.println("修改:"+user);
	return "success";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值