springMVC Controller基本测试配置

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    <groupId>com.qfedugroupId>
    <artifactId>1713springmvcartifactId>
    <version>0.0.1-SNAPSHOTversion>

    <dependencies>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>4.3.10.RELEASEversion>
        dependency>


        
        <dependency>
            <groupId>javaxgroupId>
            <artifactId>javaee-apiartifactId>
            <version>7.0version>
            <scope>providedscope>
        dependency>
    dependencies>
project>

web.xml


<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">
    <display-name>1713springmvcdisplay-name>
    <welcome-file-list>
        <welcome-file>index.htmlwelcome-file>
        <welcome-file>index.htmwelcome-file>
        <welcome-file>index.jspwelcome-file>
        <welcome-file>default.htmlwelcome-file>
        <welcome-file>default.htmwelcome-file>
        <welcome-file>default.jspwelcome-file>
    welcome-file-list>

    
    
    <servlet-mapping>
        <servlet-name>defaultservlet-name>
        
        <url-pattern>*.htmlurl-pattern>
        <url-pattern>*.jsurl-pattern>
        <url-pattern>*.cssurl-pattern>
    servlet-mapping>

    
    <servlet>
        <servlet-name>springDispatcherServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classPath:springmvc.xmlparam-value>
        init-param>
        
        <load-on-startup>1load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>springDispatcherServletservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>
    

web-app>

springmvc.xml



<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        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.1.xsd">

    
    
    <context:component-scan base-package="com.qfedu" />

    
    
    <bean id="internalResourceViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
        
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    bean>
    
    


beans>

UserController.java

package com.qfedu;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
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;

//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG
//
//
//

//此类用于处理用户请求,代替之前servlet所做的事情
//此类用于处理用户请求,代替之前servlet所做的事情
//此类用于处理用户请求,代替之前servlet所做的事情
//此类用于处理用户请求,代替之前servlet所做的事情

//@Controller这可别忘了  UserController那么以后就把所有关于User的servlet都放在这里  有product了再创建一个ProductController  以此类推。

@Controller
public class UserController {

    // 在处理器中定义处理用户请求的方法
    // 1方法必须是public
    // 2返回类型是String
    // 3方法名称自定义
    // 4返回值是想要转发到的jsp文件的名字

    // @RequestMapping设置表示,当请求路径为hello会执行执行@RequestMapping注解标识的方法体
    // method表示支持的请求方法,如果请求方式不支持,会报405错误 如:只设置@RequestMapping(method =
    // {RequestMethod.POST}, value = "/hello" 但是以get方式访问 那么就会报错 405
    @RequestMapping(method = { RequestMethod.POST, RequestMethod.GET }, value = "/hello")
    // 除了requestmappring以外还有具体的getmapping,postmapping
    public String hello() {

        System.out.println("hello");
        // 处理用户请求
        // 此处返回jsp文件的名字,然后springmvc中的视图解析器会拼接在xml定义的前缀和获取
        // 获取到一个完整的路径,会帮开发者做页面的跳转
        return "redirect:test.html";
        // return "redirect:test.html"; redirect是重定向的路径 而且得是全路径 因为在web-info下 重定向是访问不到的
        // 只有转发的方式才能获取到web-info里边的信息。
    }

    // 数据流入 下边的都是带参的。

    @RequestMapping("/login")
    // 方法名称 login 和@RequestMapping("/login") 不一定要一致 可以不一致 不过最好一致。
    public String login(HttpServletRequest req) {
        // 当前端传过来的url路径 http://localhost:8080/1713springmvc/login?username=zhangsan 的时候
        // 将获取到username=zhangsan。
        req.getParameter("username");
        System.out.println(req.getParameter("username"));
        return "login";
    }

    /**
     * 在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法 value:参数名 (前端页面中input name的值)
     * required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
     * defaultValue:默认值,当没有传递参数时使用该值   
     * defaultValue在required为false时有效,一般配合使用
     */

    /**
     * 
     * 参数:(@RequestParam(value = "username", required = true, defaultValue ="...")String user) 的意思是:
     * 前边的username的值 springmvc已经封装成一句string类型的字符串了
     * 把这段string字符串赋值给user 那当输出user的时候 就可以得到想要得到的值了
     * 注意:当后边类型为 @RequestParam(value ="age", required = true, defaultValue = "...")int user) 的时候必须得写成int类型的,
     * 也就是说:springmvc自动帮助我们做了类型的转换。
     */

    @RequestMapping("/login2")
    public String login2(@RequestParam(value = "username", required = true, defaultValue = "...") String user) {
        System.out.println(user);
        return "login";
    }

    // *****很恨很恨常用的*****
    // 当入参处参数,参数名和前端数据中的键一样的时候 , 如:参数为: (String username)
    // 前端的标签里的name=username 这种情况就可以省略可以省略@RequestParam
    // 弊端是:springmvc提供的参数中的required 和 defaultValue 属性将不能享用了。
    @RequestMapping("/login3")
    public String login3(String username) {

        System.out.println(username);

        return "login";
    }

    // 有的时候不光是获得表单的数据 还可能获得请求到头部的属性值 服务器可以根据请求头来获取客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中 
    /**
     * 问题:要求从表单获取数据的同时,从请求头中获取Cookie数据和Host数据
     * 答:参数是支持写多个的,多个用,号隔开即可 @RequestParam  后边跟  @RequestHeader甚至再加上HttpServletRequest 也可以的。
     */
    @RequestMapping("/login4")
    public String login4(@RequestHeader("Cookie") String cookies, @RequestHeader("Host") String host) {

        System.out.println(cookies);
        System.out.println(host);
        return "login";
    }

    // 从请求中读取出来cookie
    @RequestMapping("/login5")
    public String loginc(@CookieValue("JSESSIONID") String cookie) {

        System.out.println(cookie);
        return "login";
    }

    //###########最最最最常用############
    // 通过pojo的方式获取前端数据,用于前端一次性上传大量参数的时候导致入参数参数过多,降低代码可读性的解决方法
    //使用 POJO (实体类)对象绑定请求参数值Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。另外还支持级联属性,也就是多表关联的。如:address.city、user.address.province 等
    //建议: 建议不要使用级联属性  因为还得改写前端代码。
    @RequestMapping("/login6")
    public String login5(User user) {

        System.out.println(user.getUsername());
        return "login";
    }


    //使用Servlet原生API作为参数  存到 域对象 相关的
    @RequestMapping("/login7")
    public String login6(HttpSession session, HttpServletRequest req, User user) {
        //域对象是啥 就是啥  用到与对象的时候  会用这种方法。
        System.out.println(session.getAttribute("sss"));
        return "login";
    }

}

User.java

package com.qfedu;
//

//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG
//
//
//

public class User {

    private int id;

    private String username;

    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}

springMVC Controller基本测试配置_第1张图片

springMVC Controller基本测试配置_第2张图片

springMVC Controller基本测试配置_第3张图片

你可能感兴趣的:(springmvc)