Spring MVC学习笔记(一)

主要内容:(底部有代码链接)

  1. HelloWorld(项目的结构)
  2. RequestMapping_修饰类
  3. RequestMapping_请求方式
  4. RequestMapping_请求参数&请求头
  5. RequestMapping_Ant
  6. RequestMapping_PathVariable注解
  7. HiddenHttpMethodFilter过滤器
  8. RequestParam注解
  9. RequestHeader注解
  10. CookieValue注解

项目结构:

这里写图片描述

项目中的一些解释都在代码中。。


一、helloworld
HelloWorld.java:

package com.zjy.springmvc.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorld {

    /**
     * 1.使用@RequestMapping注解来映射请求的URL
     * 2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver视图解析器会做如下的解析:
     * 通过prefix+returnVal+后缀 这样的方式得到实际的物理视图,然后做转发操作
     * 
     * /WEB-INF/views/success.jsp
     * @return
     */

    @RequestMapping("/helloworld")
    public String Hello(){
        System.out.println("HelloWorld");
        return "success";

    }
}

建立dispatcherServlet-servlet.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.zjy.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>

建立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_3_0.xsd"
    id="WebApp_ID" version="3.0">

    <!-- 配置 :可以把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>


    <!-- 配置DispatcherServlet -->
    <servlet>  
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化参数,配置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>dispatcherServlet</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
</web-app>

index.jsp:

 <a href="helloworld">Hello World</a>

success.jsp:

    <body>
        <h4>Success</h4>
    </body>

二、RequestMapping、HiddenHttpMethodFilter 过滤器、RequestParam 注解、RequestHeader 注解、CookieValue 注解

SpingMVCTest.java

package com.zjy.springmvc.handlers;

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.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {

    private static final String SUCCESS="success";

    /**
     * 1.@RequestMapping除了修饰方法,还可以来修饰类
     * @return
     */
    @RequestMapping("/testRequestMapping")
    public String testRequestMapping(){
        System.out.println("testRequestMapping");
        return SUCCESS;
    }

    /**
     * 使用method属性来指定请求方式
     * @return
     */
    @RequestMapping(value="/testMethod",method=RequestMethod.POST)
    public String testMethod(){
        System.out.println("testMethod");
        return SUCCESS;
    }

    /**
     * 使用通配符来指定随意的请求方式(Ant风格的方式)
     * 路径中的*在访问的时候可以指定任意
     */
    @RequestMapping("/testAntMethod/*/abc")
    public String testAntMethod(){
        System.out.println("testAntMethod");
        return SUCCESS;
    }

    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println("testPathVariable");
        return SUCCESS;
    }

    /**
     * Rest 风格的URL
     * 以crud为例:
     * 新增:/order POST
     * 修改:/order 1 PUT
     * 获取:/order 1 GET
     * 删除:/order 1 DELETE
     * 
     * 如何发送PUT请求和DELETE请求?
     * 1.需要配置HiddenHttpMethodFilter
     * 2.需要发送POST请求
     * 3.需要发送POST请求时,携带一个隐藏域,值为DELETE或PUT
     * 
     * 在springmvc里面中的目标方法中,如何得到id呢?
     * 使用@PathVariable注解
     * 
     * @param id
     * @return
     */

    @RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
    public String testRest(@PathVariable Integer id){
        System.out.println("testRest Get:" + 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.DELETE)
    public String testRestDelete(@PathVariable Integer id){
        System.out.println("testRest DELETE :" + id);
        return SUCCESS;
    }

    @RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)
    public String testRestPut(@PathVariable Integer id){
        System.out.println("testRest PUT :" + id);
        return SUCCESS;
    }


    /**
     * (重要)
     * @RequestParam来映射请求参数。
     * value值即请求参数的参数名
     * required 该参数是否必须,默认为true
     * defaultValue 设置请求参数的默认值
     * 
     * @param username
     * @param age
     * @return
     */
    @RequestMapping(value="/testRequestParam")
    public String testRequestParam(@RequestParam(value="username") String username,
            @RequestParam(value="age",required=false,defaultValue="0") int age){
        System.out.println("TestRequestParam,username= " + username + ",age :" + age);
        return SUCCESS;
    }

    /**
     * 映射请求头信息(只需了解)
     * 用法同@RequestParam
     * 
     * @param al
     * @return
     */
    @RequestMapping(value="/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){
        System.out.println("testRequestHeader, Accept-Language:" + al);
        return SUCCESS;
    }


    /**
     * (只需要了解)
     * @CookieValue:映射一个Cookie值,属性和@RequestParam
     * @param sessionid
     * @return
     */
    @RequestMapping(value="/testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID") String sessionid){
        System.out.println("testCookieValue : sessionId=" + sessionid);
        return SUCCESS;
    }
}

index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>HelloWorld</title>

  </head>

  <body>

    <a href="springmvc/testCookieValue">Test CookieValue</a>
    <br><br>

    <a href="springmvc/testRequestHeader">Test RequestHeader</a>
    <br><br>

    <a href="springmvc/testRequestParam?username=zjy&age=11">Test RequestParam</a>
    <br><br>

    <form action="springmvc/testRest/1" method="post">
        <input type="hidden" name="_method" value="PUT"/>
        <input type="submit" value="Test Rest Put"/>
    </form> 
    <br><br>

    <form action="springmvc/testRest/1" method="post">
        <input type="hidden" name="_method" value="DELETE"/>
        <input type="submit" value="Test Rest Post"/>
    </form>
    <br><br>

    <form action="springmvc/testRest" method="post">
        <input type="submit" value="Test Rest POST"/>
    </form>
    <br><br>

    <a href="springmvc/testRest/1">Test Rest Get</a>
    <br><br>

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

    <a href="springmvc/testAntMethod/fdsa/abc">Test AntMethod</a>

    <form action="springmvc/testMethod" method="post">
        <input type="submit"/>
    </form>

    <a href="springmvc/testRequestMapping">Test RequestMapping</a>

    <a href="helloworld">Hello World</a>
  </body>
</html>

代码链接:

点击跳转

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值