处理请求

今天学了三种请求,一种是 PathVariable ,一种是 RequestParam ,还有一种是CookieValue,并实现简单rest增删改查

上代码

  1. package com.springmvc;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.CookieValue;
  5. import org.springframework.web.bind.annotation.PathVariable;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestMethod;
  8. import org.springframework.web.bind.annotation.RequestParam;
  9.  
  10. @RequestMapping("/path")
  11. @Controller
  12. public class Path {
  13.  
  14. @RequestMapping("/pathVariable/{id}")
  15. public String pathValiable(@PathVariable(value="id") Integer id){
  16. System.out.println("PathValue :" +id);
  17.  
  18. return "hello";
  19.  
  20. }
  21.  
  22. @RequestMapping("/RequestParam")
  23. public String RequestParam(@RequestParam(value="name") String name,@RequestParam(value="password") String password){
  24. System.out.println("name:" +name+" password:"+password);
  25. return "hello";
  26. }
  27.  
  28. @RequestMapping(value="/rest/{id}" ,method=RequestMethod.GET)//查
  29. public String restGet(@PathVariable(value="id") Integer id){
  30. System.out.println("Get:"+id);
  31.  
  32. return "hello";
  33. }
  34.  
  35. @RequestMapping(value="/rest" ,method=RequestMethod.POST)//增加
  36. public String restPost( ){
  37. System.out.println("Test Post");
  38.  
  39. return "hello";
  40. }
  41.  
  42. @RequestMapping(value="/rest/{id}" ,method=RequestMethod.DELETE)//删
  43. public String restDelete(@PathVariable(value="id") Integer id){
  44. System.out.println("delete:"+id);
  45.  
  46. return "hello";
  47. }
  48.  
  49. @RequestMapping(value="/rest/{id}" ,method=RequestMethod.PUT)//改
  50. public String restPut(@PathVariable(value="id") Integer id){
  51. System.out.println("Put:"+id);
  52.  
  53. return "hello";
  54. }
  55.  
  56. @RequestMapping("/cookie")
  57. public String cookieRead(@CookieValue("JSESSIONID") String cookie){
  58. System.out.println("Cookie:"+cookie);
  59. return "hello";
  60. }
  61.  
  62. }

index.jsp文件

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10.  
  11. <a href="/HelloWeb/path/pathVariable/5">pathVariable</a>
  12. <a href="/HelloWeb/path/RequestParam?name=xiaozhi&password=no">RequestParam</a>
  13. <a href="/HelloWeb/path/cookie">Cookie</a>
  14.  
  15. <form action="/HelloWeb/path/rest/5" method="post">
  16. <input type="hidden" name="_method" value="put"/>
  17. <input type="submit" value="put 5"/>
  18. </form>
  19.  
  20. <form action="/HelloWeb/path/rest/5" method="post">
  21. <input type="hidden" name="_method" value="DELETE"/>
  22. <input type="submit" value="delete 5"/>
  23. </form>
  24.  
  25. <form action="/HelloWeb/path/rest" method="post">
  26. <input type="submit" value="test post"/>
  27. </form>
  28.  
  29. </body>
  30. </html>

web.xml文件改如下

  1. <!--文件名字为web.xml 放在WEB-INF文件夹下面,最原始的配置 -->
  2.  
  3. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns="http://java.sun.com/xml/ns/javaee"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  6. id="WebApp_ID" version="2.5">
  7.  
  8. <!-- 这个过滤器必须在servlet前面才有作用,stringmvc表单只有get和post形式,所以要实现Delete和Put,需要人为添加
  9. 这个方法过滤器,之后再上面的jsp文件 表单form里面加入 "hidden"属性,并为其赋值,具体看上代码
  10. -->
  11. <filter>
  12. <filter-name>MethodFilter</filter-name>
  13. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  14. </filter>
  15. <filter-mapping>
  16. <filter-name>MethodFilter</filter-name>
  17. <url-pattern>/*</url-pattern>
  18. </filter-mapping>
  19.  
  20. <!--下面一个是指定位置读取配置文件 -->
  21. <servlet>
  22. <servlet-name>MySpringMVC</servlet-name>
  23. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  24. <init-param>
  25. <param-name>contextConfigLocation</param-name>
  26. <param-value>classpath:springmvc.xml</param-value>
  27. </init-param>
  28. <load-on-startup>1</load-on-startup>
  29. </servlet>
  30.  
  31. <!--匹配URL 之后就可以用Controller注解进行匹配url-->
  32. <servlet-mapping>
  33. <servlet-name>MySpringMVC</servlet-name>
  34. <url-pattern>/</url-pattern>
  35. </servlet-mapping>
  36.  
  37. </web-app>

----------------------------------------------------------------------------Day2分界线-----------------------------------------------------------------------------------------------------------------------

RequestHeader 和POJO类简单应用

JAVA程序如下

  1. package com.springmvc;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestHeader;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6.  
  7. @Controller
  8. public class Study4 {
  9.  
  10. @RequestMapping("/requestHeader")
  11. public String testRequestHeader(@RequestHeader(value="Accept-Language") String language){
  12. System.out.println(language);
  13. return "hello";
  14. }
  15.  
  16. @RequestMapping("/testPOJO")
  17. public String testPOJO(User user){//默认将传进一个对象,对象的属性名字要和表单上的name一样
  18. System.out.println(user);
  19. return "hello";
  20. }
  21.  
  22. }
  23.  
  24. package com.springmvc;
  25.  
  26. public class User {
  27. private int id;
  28. private String name;
  29. private int salary;
  30. private Address address;
  31. public int getId() {
  32. return id;
  33. }
  34. public void setId(int id) {
  35. this.id = id;
  36. }
  37. public String getName() {
  38. return name;
  39. }
  40. public void setName(String name) {
  41. this.name = name;
  42. }
  43. public int getSalary() {
  44. return salary;
  45. }
  46. public void setSalary(int salary) {
  47. this.salary = salary;
  48. }
  49. public Address getAddress() {
  50. return address;
  51. }
  52. public void setAddress(Address address) {
  53. this.address = address;
  54. }
  55. @Override
  56. public String toString() {
  57. return "User [id=" + id + ", name=" + name + ", salary=" + salary
  58. + ", address=" + address + "]";
  59. }
  60.  
  61. }
  62.  
  63. package com.springmvc;
  64.  
  65. public class Address {
  66. private String province;
  67. private String city;
  68. public String getProvince() {
  69. return province;
  70. }
  71. public void setProvince(String province) {
  72. this.province = province;
  73. }
  74. public String getCity() {
  75. return city;
  76. }
  77. public void setCity(String city) {
  78. this.city = city;
  79. }
  80. @Override
  81. public String toString() {
  82. return "Address [province=" + province + ", city=" + city + "]";
  83. }
  84.  
  85. }

xml文件

  1. <form action="/HelloWeb/testPOJO" method="post">
  2. ID<input type="text" name="id"><br>
  3. Name<input type="text" name="name"><br>
  4. Salary<input type="text" name="salary"><br>
  5. Province<input type="text" name="address.province"><br>
  6. City<input type="text" name="address.city"><br>
  7. <input type="submit" name="submit">
  8. </form>

ModelAndView的概念

数据模型是model 页面是view 操作是control

  1. @RequestMapping("/testModel")//这是ModelAndView的构造方式
  2. public ModelAndView testModel(){
  3. ModelAndView mav = new ModelAndView("hello");
  4. mav.addObject("time", new Date());
  5. return mav;
  6. }
  7.  
  8. @RequestMapping("/testModel2")
  9. public ModelAndView testModel2(){
  10. Map<String,Object> map = new HashMap<String,Object>();
  11. map.put("java", "600");
  12. map.put("c++", "800");
  13. map.put("pathon", "1000");
  14. ModelAndView mav = new ModelAndView("hello",map);//view是必须的
  15. mav.addObject("time", new Date());//这是键值对形式,所以构造器也可以直接用view名字和map函数来构造
  16. return mav;
  17. }

index文件如下

  1. <a href="/HelloWeb/testModel">ModelAndView</a>
  2. <a href="/HelloWeb/testModel2">ModelAndView2</a>

跳转jsp文件如下

  1. Java Price${requestScope.java}
  2. Pathon Price${requestScope.pathon}

SpringMVC学习二的更多相关文章

  1. (转)SpringMVC学习(二)——SpringMVC架构及组件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231385 相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上 ...

  2. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)-转载

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?  这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比 ...

  3. SpringMVC学习(二)

    Ajax 简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分 ...

  4. springMVC学习二 原始springMVC环境搭建

    第一步:导入jar包 第二步:配置DispatcherServlet DispatcherServlet本质是一个Servlet,在spring-webmvc包中,在servlet2.5之前  spr ...

  5. springMVC学习总结(二)路径映射和请求方法限定

    springMVC学习总结(二)路径映射和请求方法限定 一.路径映射 无参数的访问路径 对springmvc项目的访问路径,是由根路径和子路径组成:在注解式开发中,根路径标注在类名之上,子路径标注在方 ...

  6. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  7. SpringMVC入门学习(二)

    SpringMVC入门学习(二) ssm框架 springMVC  在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...

  8. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

  9. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

随机推荐

  1. You Don't Know JS: this & Object Prototypes( 第2章 this)

    this is a binding made for each function invocation, based entirely on its call-site (how the functi ...

  2. Building designing UVA - 11039

    先取正的和负的绝对值较小者为开头 .然后交替从正负数中取绝对值最小但比上一个大的. 证明: 1.开头选正负数中绝对值较小的:否则能再多放1个. 2.交替选的时候选最小的符合条件的:如果大的符合,换小的 ...

  3. android--------实现Activity和Fragment通信的面向对象的万能接口

    前言 开发一个app时,常用Activity和Fragment,由于操作方便Fragment越来越受欢迎,这样就避免不了Activity和Fragment.Fragment和Fragment之间的通信 ...

  4. Django ModelForm 组件的应用

    ModelForm组件的应用 ModelForm 组件的创建: 1.创建一个类,该类继承 forms.ModelForm  2.大致组成部分 class ModelNameModelForm(form ...

  5. HTML 弹出遮罩层二(遮罩层和内容标签分开)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 解决无法安装Microsoft .Net Framework 3.5

    如果解决不了,试试我的方法吧,我也在网上找了好久,最终在本地解决了 所需工具:dism,和Net Framework 3.5,已经打包 链接:https://pan.baidu.com/s/1nKok ...

  7. Tree总结

    树结构问题因为容易写出解法,因此经常出现在面试题中 1. 树的种类 1) Tree 2) Binary Trees 3) Binary Search Trees(BST) : used to sort ...

  8. 2-SET 前缀优化建图

    1, Duff in Mafia CodeForces - 587D 2, Ants CodeForces - 1007D

  9. python记录day_20 多继承

    多继承 继承: x是一种y的时候.可以使用继承关系.是"is a"的关系 在python中,支持多继承,一个类可以拥有多个父类.但是多继承中, 存在着这样一个问题,当两个父类中出现 ...

  10. rsync未授权访问漏洞利用

    漏洞描述:rsync是Linux系统下的数据镜像备份工具,使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他ssh,rsync主机同步.也就是说如果你可以连接目标IP的r ...