SpringMVC-helloworld&RequestMapping

SpringMVC

SpringMVC-helloword

  • index.jsp文件

    • <%@ page language="java" contentType="text/html; charset=UTF-8"
          pageEncoding="UTF-8"%>
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
      	<a href="helloworld">helloworld</a>
      </body>
      </html>
      
  • jsp文件中的href–>HelloWorld.java

    • package com.atguigu.springmvc.handlers;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      @Controller
      public class HelloWord {
      	/**
      	 * 
      	 *1.使用@RequestMapping注解来映射请求的URL
      	 *2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver视频解析器,会做如下的解析
      	 *通过prefix +returnVal +后缀 这样的方式得到实际的物理视图
      	 *
      	 *		/WEB-INF/views/success.jsp
      	 */
      	@RequestMapping("/helloworld")
      	public String hello() {
      		System.out.println("hello world");
      		return "success";
      	}
      }
      
  • WebContent->WEB-INF->web.xml文件

    • <?xml version="1.0" encoding="UTF-8"?>
      <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">
        <!--配置DispatcherSevlet -->
      	<servlet>
      		<servlet-name>springDispatcherServlet</servlet-name>
      		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      		
      		<!-- 配置DispatcherServlet的一个初始化参数:配置SpringMVC配置文件的位置和名称 -->
      		<!-- 实际上也可以不通过contextConfigLocation来配置SpringMVC的配置文件,而使用默认
      			默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
      		 -->   
      		<init-param>
      			<param-name>contextConfigLocation</param-name>
      			<param-value>classpath:springmvc.xml</param-value>
      		</init-param>
      		
      		<load-on-startup>1</load-on-startup>
      	</servlet>
      
      	<servlet-mapping>
      		<servlet-name>springDispatcherServlet</servlet-name>
      		<url-pattern>/</url-pattern>
      	</servlet-mapping>
      </web-app>
      
  • src目录下的springmvc.xml文件

    • <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	xmlns:context="http://www.springframework.org/schema/context"
      	xmlns:mvc="http://www.springframework.org/schema/mvc"
      	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
      		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
      
      	<!-- 配置自动扫描的包 -->
      	<context:component-scan base-package="com.atguigu.springmvc"></context:component-scan>
      	<!-- 配置视图解析器  如何把handler方法返回值解析为实际的物理视图-->
      	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      		<property name="prefix" value="/WEB-INF/views/"></property>
      		<property name="suffix" value=".jsp"></property>
      	</bean>
      </beans>
      
  • 由springmvc.xml文件知在WEB-INF文件下又新建一个views文件,在views文件下建立了一个success.jsp作为index.jsp中超链接的页面

    • success.jsp

      • <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        </head>
        <body>
        	<h4>success Page</h4>
        </body>
        </html>
        
  • 在这里插入图片描述


RequestMapping_修饰类

  • 新建一个SpringMVCTest测试类

    • package com.atguigu.springmvc.handlers;
      
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      @RequestMapping("/springmvc")
      @Controller
      public class SpringMVCTest {
      	
      	
      	private static final String SUCCESS="success";
      	
      	/**
      	 * 1.@RequestMapping除了修饰方法,还可以修饰类
      	 * 2. 
      	 * 		1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录
      	 * 		2). 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。若类定义处未标注 @RequestMapping,则方法处标记的 URL
      	 * 相对于 WEB 应用的根目录
      
      	 * @return
      	 */
      	@RequestMapping("/testRequestMapping")
      	public String testRequestMapping() {
      		System.out.println("testRequestMapping");
      		return SUCCESS;
      	}
      }
      
  • index.jsp中又添加一个超链接

    • <a href="springmvc/testRequestMapping">Test RequestMapping</a>
      	<br><br>
      
  • 点击超链接返回 带有success Page的页面


RequestMapping_请求方式

  • 在这里插入图片描述

  • 请求方式

  • 在SpringMVCTest中新建一个testMethod方法

    • /**
      	 * 常用: 使用 method 属性来指定请求方式
      	 * @return
      	 */
      	@RequestMapping(value="/testMethod",method=RequestMethod.POST)
      	public String testMethod() {
      		System.out.println("testMethod");
      		return SUCCESS;
      	}
      	
      
  • 在index.jsp中新加一个超链接和一个表格

    • <form action="springmvc/testMethod" method="POST">
      		<input type="submit" value="submit">
      </form>
      <a href="springmvc/testMethod">Test Method</a>
      
    • 点击Test Method超链接 出错

      *在这里插入图片描述

    • 点击submit按钮 出现success Page页面 说明成功

  • 请求参数 params 和 headers

  • 在SpringMVCTest中新建一个testParamsAndHeaders方法

    • /**
      	 * 了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.
      	 * 
      	 * @return
      	 */
      	@RequestMapping(value="testParamsAndHeaders",
      			params= {"username","age!=10"},headers= {"Accept-Language: zh-CN,zh;q=0.9"})
      	public String testParamsAndHeaders() {
      		System.out.println("testParamsAndHeaders");
      		return SUCCESS;
      	}
      
  • 在index.jsp中加入一个对应的超链接

    • <a href="springmvc/testParamsAndHeaders?username=atauigu&age=11">Test ParamsAndHeaders</a>
      	<br><br>
      

      此时age符合age!=10的要求所以可以正常访问处success Page的页面

    • <a href="springmvc/testParamsAndHeaders?username=atauigu&age=10">Test ParamsAndHeaders</a>
      	<br><br>
      

      此时age值不对 报错 404

      在这里插入图片描述


RequestMapping_Ant 路径

  • 在这里插入图片描述

  • 新建一个testAntPath方法

    • @RequestMapping("/testAntPath/*/abc")
      	public String testAntPath() {
      		System.out.println("testAndPath");
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testAntPath/xuefeng/abc">Test AntPath</a>
      	<br><br>
      

    访问此超链接 出现success Page页面 *表示通配符,写任何字符都能正常访问


RequestMapping_PathVariable注解

  • 在这里插入图片描述

  • 新建一个testPathVariable方法

    • /**
      	 * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.
      	 * @param id
      	 * @return
      	 */
      	@RequestMapping("testPathVariable/{id}")
      	public String testPathVariable(@PathVariable("id") Integer id) {
      		System.out.println("testPathVariable:"+id);
      		return SUCCESS;
      	}
      
  • 新建一个超链接

    • <a href="springmvc/testPathVariable/1">Test PathVariable</a>
      	<br><br>
      

    访问成功 控制台打印testPathVariable:1


RequestMapping_HiddenHttpMethodFilter 过滤器

*在这里插入图片描述

  • 在这里插入图片描述

  • 首先在web.xml文件中加入如下代码

    • <!-- 
      	配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求 
      	-->
      	<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>
      
  • 其次新建四个方法来测试

    • /**
      	 * Rest 风格的 URL. 以 CRUD 为例: 
      	 * 新增: /order POST 
      	 * 修改: /order/1 PUT update?id=1 
      	 * 获取:/order/1 GET get?id=1 
      	 * 删除: /order/1 DELETE delete?id=1
      	 * 
      	 * 如何发送 PUT 请求和 DELETE 请求呢 ? 
      	 * 1. 需要配置 HiddenHttpMethodFilter 
      	 * 2. 需要发送 POST 请求
      	 * 3. 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT
      	 * 
      	 * 在 SpringMVC 的目标方法中如何得到 id 呢? 使用 @PathVariable 注解
      	 * 
      	 */
      	@RequestMapping(value = "/testRest/{id}", method = RequestMethod.PUT)
      	public String testRestPut(@PathVariable Integer id) {
      		System.out.println("testRest Put: " + id);
      		return SUCCESS;
      	}
      
      	@RequestMapping(value = "/testRest/{id}", method = RequestMethod.DELETE)
      	public String testRestDelete(@PathVariable Integer id) {
      		System.out.println("testRest Delete: " + id);
      		return SUCCESS;
      	}
      
      	@RequestMapping(value = "/testRest", method = RequestMethod.POST)
      	public String testRest() {
      		System.out.println("testRest POST");
      		return SUCCESS;
      	}
      	@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
      	public String testRest(@PathVariable Integer id ) {
      		System.out.println("testRest GET: "+id);
      		return SUCCESS;
      	}
      
  • 最后在index.jsp中加入三个表格和一个超链接

    • 	<form action="springmvc/testRest/1" method="post">
        		<input type="hidden" name="_method" value="PUT"/>
        		<input type="submit" value="TestRest PUT"/>
        	</form>
        	<br><br>
        	
        	<form action="springmvc/testRest/1" method="post">
        		<input type="hidden" name="_method" value="DELETE"/>
        		<input type="submit" value="TestRest DELETE"/>
        	</form>
        	<br><br>
        	
        	<form action="springmvc/testRest" method="post">
        		<input type="submit" value="TestRest POST"/>
        	</form>
        	<br><br>
        
        	<a href="springmvc/testRest/1">Test Rest Get</a>
        	<br><br>
      
    • 在这里插入图片描述

  • 点击四个 然后转到success Page页面 并在控制台上打印处

    testRest GET: 1
    testMethod
    testRest POST
    testRest Delete: 1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值