处理请求

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

上代码

package com.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; @RequestMapping("/path")
@Controller
public class Path { @RequestMapping("/pathVariable/{id}")
public String pathValiable(@PathVariable(value="id") Integer id){
System.out.println("PathValue :" +id); return "hello"; } @RequestMapping("/RequestParam")
public String RequestParam(@RequestParam(value="name") String name,@RequestParam(value="password") String password){
System.out.println("name:" +name+" password:"+password);
return "hello";
} @RequestMapping(value="/rest/{id}" ,method=RequestMethod.GET)//查
public String restGet(@PathVariable(value="id") Integer id){
System.out.println("Get:"+id); return "hello";
} @RequestMapping(value="/rest" ,method=RequestMethod.POST)//增加
public String restPost( ){
System.out.println("Test Post"); return "hello";
} @RequestMapping(value="/rest/{id}" ,method=RequestMethod.DELETE)//删
public String restDelete(@PathVariable(value="id") Integer id){
System.out.println("delete:"+id); return "hello";
} @RequestMapping(value="/rest/{id}" ,method=RequestMethod.PUT)//改
public String restPut(@PathVariable(value="id") Integer id){
System.out.println("Put:"+id); return "hello";
} @RequestMapping("/cookie")
public String cookieRead(@CookieValue("JSESSIONID") String cookie){
System.out.println("Cookie:"+cookie);
return "hello";
} }

index.jsp文件

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body> <a href="/HelloWeb/path/pathVariable/5">pathVariable</a>
<a href="/HelloWeb/path/RequestParam?name=xiaozhi&password=no">RequestParam</a>
<a href="/HelloWeb/path/cookie">Cookie</a> <form action="/HelloWeb/path/rest/5" method="post">
<input type="hidden" name="_method" value="put"/>
<input type="submit" value="put 5"/>
</form> <form action="/HelloWeb/path/rest/5" method="post">
<input type="hidden" name="_method" value="DELETE"/>
<input type="submit" value="delete 5"/>
</form> <form action="/HelloWeb/path/rest" method="post">
<input type="submit" value="test post"/>
</form> </body>
</html>

web.xml文件改如下

<!--文件名字为web.xml 放在WEB-INF文件夹下面,最原始的配置 -->

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"> <!-- 这个过滤器必须在servlet前面才有作用,stringmvc表单只有get和post形式,所以要实现Delete和Put,需要人为添加
这个方法过滤器,之后再上面的jsp文件 表单form里面加入 "hidden"属性,并为其赋值,具体看上代码
-->
<filter>
<filter-name>MethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!--下面一个是指定位置读取配置文件 -->
<servlet>
<servlet-name>MySpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <!--匹配URL 之后就可以用Controller注解进行匹配url-->
<servlet-mapping>
<servlet-name>MySpringMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

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

RequestHeader 和POJO类简单应用

JAVA程序如下

package com.springmvc;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class Study4 { @RequestMapping("/requestHeader")
public String testRequestHeader(@RequestHeader(value="Accept-Language") String language){
System.out.println(language);
return "hello";
} @RequestMapping("/testPOJO")
public String testPOJO(User user){//默认将传进一个对象,对象的属性名字要和表单上的name一样
System.out.println(user);
return "hello";
} } package com.springmvc; public class User {
private int id;
private String name;
private int salary;
private Address address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", salary=" + salary
+ ", address=" + address + "]";
} } package com.springmvc; public class Address {
private String province;
private String city;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + "]";
} }

xml文件

<form action="/HelloWeb/testPOJO" method="post">
ID<input type="text" name="id"><br>
Name<input type="text" name="name"><br>
Salary<input type="text" name="salary"><br>
Province<input type="text" name="address.province"><br>
City<input type="text" name="address.city"><br>
<input type="submit" name="submit">
</form>

ModelAndView的概念

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

@RequestMapping("/testModel")//这是ModelAndView的构造方式
public ModelAndView testModel(){
ModelAndView mav = new ModelAndView("hello");
mav.addObject("time", new Date());
return mav;
} @RequestMapping("/testModel2")
public ModelAndView testModel2(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("java", "600");
map.put("c++", "800");
map.put("pathon", "1000");
ModelAndView mav = new ModelAndView("hello",map);//view是必须的
mav.addObject("time", new Date());//这是键值对形式,所以构造器也可以直接用view名字和map函数来构造
return mav;
}

index文件如下

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

跳转jsp文件如下

Java Price${requestScope.java}
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. Hadoop – The Definitive Guide Examples,,IntelliJ

    IntelliJ Project for Building Hadoop – The Definitive Guide Examples http://vichargrave.com/intellij ...

  2. android--------自定义控件 之 基本实现篇

    前面简单的讲述了Android中自定义控件中的几个方法,今天通过代码来实现一个简单的案例 自定义一个扇形图 自定义控件示例: 这里先介绍继承View的方式为例 public class Circula ...

  3. git 基础知识

    git 分布式版本控制系统 git三棵树: 工作目录 红色 等待添加到暂存区域 需执行git add filename 命令添加到暂存区 暂存区域 绿色 文件等待被提交 需执行 git commit ...

  4. CF1114E Arithmetic Progression

    给定一个打乱的等差数列,每次两种操作. 1.查询一个位置. 2.查询是否有比x大的数字. 一共60次操作. sol: 30次操作即可二分出首项. 剩下30次操作查询出30个位置然后两两做差取gcd即可 ...

  5. spring boot(十七)上传文件

    上传文件是互联网中常常应用的场景之一,最典型的情况就是上传头像等,今天就带着带着大家做一个Spring Boot上传文件的小案例. 1.pom包配置 我们使用Spring Boot最新版本1.5.9. ...

  6. sharding-jdbc读写分离原理解读

    原帖地址:https://blog.csdn.net/yanyan19880509/article/details/78170233 前言 很多时候,为了应付DB的高并发读写,我们会采用读写分离技术. ...

  7. ABAP游标

    DATA: BEGIN OF count_line, carrid TYPE spfli-carrid, count TYPE i, END OF count_line, spfli_tab TYPE ...

  8. Redshift中查看database、schema、table数据大小

    1. 查看当前数据库大小以及记录行数 select trim(pgdb.datname) as database, sum(b.mbytes) as mbytes, sum(a.rows) as ro ...

  9. InnoDB行记录格式(compact)、InnoDB数据页结构

    1. compact 行记录格式: 变长字段长度列表,null标志位,记录头信息,列1数据,列2数据 …… 记录头信息中包含许多信息,只列举一部分: 名称 大小 描述 deleted_flag 1bi ...

  10. e2e 测试(1)

    距离上一随笔,已经有一个月没有没写.到今天,刚刚好好,是学习e2e测试的一个月.今天有点时间可以总结一下这个月来的收获. 1.搭建e2e的测试环境 我是使用 Vue 构建项目,所以我也是通过Vue-c ...