springmvc复习

Posted on 2020-11-06 18:45  锦喵卫指挥使  阅读(39)  评论(0编辑  收藏  举报

![ ](黑马57_SpringMVC·.assets/ .png)

============================================

01.SpringMVC概述及入门案例


01.三层架构介绍和MVC设计模型介绍


02.SpringMVC框架的介绍


03.入门程序之需求分析


04.入门程序之搭建开发环境


05.入门程序之入门代码编写


06.入门案例的流程总结

入门案例的流程总结 .png

![](.assets/入门案例的流程总结 .png)


07.入门案例中使用的组件介绍

入门案例中使用的组件介绍.png

源码:hellospringmvc11

08.RequestMapping注解的作用


09.RequestMapping注解的属性

============================================

02.参数绑定及自定义类型转换


1 请求参数绑定入门

<a href="param/testParam?username=hehe&password=123">请求参数绑定</a>
@Controller
@RequestMapping("/param")
public class ParamController {

    /**
     * 请求参数绑定入门
     * http://localhost:8080/param/testParam
     * @return
     */
    @RequestMapping("/testParam")
    public String testParam(String username,String password){
        System.out.println("执行了...");
        System.out.println("username:"+username);
        System.out.println("password:"+password);
        return "success";
    }
}
执行了...
username:hehe
password:123

2 请求参数绑定实体类型

package com.domain;

import java.io.Serializable;

public class Account implements Serializable{

    private String username;
    private String password;
    private Double money;

    private User user;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Account{" +
          "username='" + username + '\'' +
          ", password='" + password + '\'' +
          ", money=" + money +
          ", user=" + user +
          '}';
    }
}

/**
     * 请求参数绑定把数据封装到JavaBean的类中
     * http://localhost:8080/param.jsp
     * @return
     */
    @RequestMapping("/saveAccount")
    public String saveAccount(Account account){
        System.out.println("执行了...");
        System.out.println(account);
        return "success";
    }
<%--把数据封装Account类中--%>
<form action="param/saveAccount" method="get">
    姓名:<input type="text" name="username" /><br/>
    密码:<input type="text" name="password" /><br/>
    金额:<input type="text" name="money" /><br/>
    用户姓名:<input type="text" name="user.uname" /><br/>
    用户年龄2:<input type="text" name="user.age" /><br/>
    <input type="submit" value="提交" />
</form>
Account{username='111', password='222', money=333.0, user=User{uname='444', age=555, date=null}}

3 配置解决中文乱码的过滤器

  <!--配置解决中文乱码的过滤器-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

4 请求参数绑定集合类型

package com.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class Account implements Serializable{

    private String username;
    private String password;
    private Double money;

//    private User user;
    private List<User> list;
    private Map<String,User> map;

    public String getUsername() {
        return username;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Double getMoney() {
        return money;
    }

    public void setMoney(Double money) {
        this.money = money;
    }

    public List<User> getList() {
        return list;
    }

    public void setList(List<User> list) {
        this.list = list;
    }

    public Map<String, User> getMap() {
        return map;
    }

    public void setMap(Map<String, User> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Account{" +
          "username='" + username + '\'' +
          ", password='" + password + '\'' +
          ", money=" + money +
          ", list=" + list +
          ", map=" + map +
          '}';
    }
}


<form action="param/saveAccount" method="get">
    姓名:<input type="text" name="username" /><br/>
    密码:<input type="text" name="password" /><br/>
    金额:<input type="text" name="money" /><br/>
    用户姓名:<input type="text" name="user.uname" /><br/>
    用户年龄:<input type="text" name="user.age" /><br/>

    用户姓名:<input type="text" name="list[0].uname" /><br/>
    用户年龄:<input type="text" name="list[0].age" /><br/>

    用户姓名:<input type="text" name="map['one'].uname" /><br/>
    用户年龄:<input type="text" name="map['one'].age" /><br/>
    <input type="submit" value="提交" />
</form>
Account{username='111', password='222', money=333.0, list=[User{uname='666', age=777, date=null}], map={one=User{uname='888', age=999, date=null}}}

5 自定义类型转换器演示异常


6 自定义类型转换器代码编写


7 获取Servlet原生的API

============================================

03.SpringMVC常用注解


1 RequestParam注解

<a href="anno/testRequestParam?name=hhhhhhhh">RequestParam</a>
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name="name") String username){
        System.out.println("执行了...");
        System.out.println(username);
        return "success";
    }

2 RequestBody注解

<form action="anno/testRequestBody" method="post">
    用户姓名:<input type="text" name="username" /><br/>
    用户年龄:<input type="text" name="age" /><br/>
    <input type="submit" value="提交" />
</form>
    /**
     * 获取到请求体的内容
     * @return
     */
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println("执行了...");
        System.out.println(body);
        return "success";
    }
username=aaa&age=123

3 PathVariable注解

<a href="anno/testPathVariable/10">testPathVariable</a>
    /**
     * PathVariable注解
     * @return
     */
    @RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name="sid") String id){
        System.out.println("执行了...");
        System.out.println(id);
        return "success";
    }

4 HiddentHttpMethodFilter过滤器


5 RequestHeader注解


6 CookieValue注解

<a href="anno/testCookieValue">CookieValue</a>
    /**
     * 获取Cookie的值
     * @return
     */
    @RequestMapping(value="/testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID") String cookieValue){
        System.out.println("执行了...");
        System.out.println(cookieValue);
        return "success";
    }

7 ModelAttribute注解


8 SessionAttributes注解

============================================

04.SpringMVC返回值类型及响应数据类型


1 搭建环境


2 响应之返回值是String类型


3 响应之返回值是void类型


4 响应之返回值是ModelAndView类型


5 响应之使用forward和redirect进行页面跳转


6 响应json数据之过滤静态资源


7 响应json数据之发送ajax的请求


8 响应json数据之响应json格式数据

<%--
  Created by IntelliJ IDEA.
  User: admini
  Date: 2020/11/5
  Time: 20:05
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.min.js"></script>

    <script>
        // 页面加载,绑定单击事件
        $(function(){
            $("#btn").click(function(){
                // alert("hello btn");
                // 发送ajax请求
                $.ajax({
                    // 编写json格式,设置属性和值
                    url:"user/testAjax",
                    contentType:"application/json;charset=UTF-8",
                    data:'{"username":"hehe","password":"123","age":30}',
                    dataType:"json",
                    type:"post",
                    success:function(data){
                        // data服务器端响应的json的数据,进行解析

                        alert(data.username + data.password + data.age);

                    }
                });

            });
        });

    </script>
</head>
<body>

<a href="user/testString" >testString</a>
<a href="user/testVoid" >testVoid</a>
<a href="user/testModelAndView" >testModelAndView</a>
<a href="user/testForwardOrRedirect" >testForwardOrRedirect</a>
<button id="btn">发送ajax的请求</button>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/5/1
  Time: 1:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <h3>执行成功</h3>

    ${user.username}
    ${user.password}

</body>
</html>

package com.controller;

import com.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
@RequestMapping("/user")
public class UserController {

    /**
     * 返回String
     * @param model
     * @return
     */
    @RequestMapping("/testString")
    public String testString(Model model){
        System.out.println("testString方法执行了...");
        // 模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("美美");
        user.setPassword("123");
        user.setAge(30);
        // model对象
        model.addAttribute("user",user);
        return "success";
    }

    /**
     * 是void
     * 请求转发一次请求,不用编写项目的名称
     */
    @RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("testVoid方法执行了...");
        // 编写请求转发的程序
//         request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);

        // 重定向
//         response.sendRedirect(request.getContextPath()+"/index.jsp");

    }

    /**
     * 返回ModelAndView
     * @return
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        // 创建ModelAndView对象
        ModelAndView mv = new ModelAndView();

        // 模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("小凤");
        user.setPassword("456");
        user.setAge(30);

        // 把user对象存储到mv对象中,也会把user对象存入到request对象
        mv.addObject("user",user);

        // 跳转到哪个页面
        mv.setViewName("success");

        return mv;
    }

    /**
     * 使用关键字的方式进行转发或者重定向
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect(){
        System.out.println("testForwardOrRedirect方法执行了...");

        // 请求的转发
        // return "forward:/WEB-INF/pages/success.jsp";

        // 重定向
        return "redirect:/index.jsp";
    }

    /**
     * 模拟异步请求响应
     */
    @RequestMapping("/testAjax")
    public @ResponseBody User testAjax(@RequestBody User user){
        System.out.println("testAjax()...");
        // 客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中
        System.out.println(user);
        // 做响应,模拟查询数据库
        user.setUsername("haha");
        user.setAge(40);
        user.setPassword("456");
        // 做响应
        return user;
    }

}

源码:hellospringmvc22

============================================

05.文件上传

============================================

06.异常处理及拦截器


1 SpringMVC拦截器之介绍和搭建环境


2 SpringMVC异常处理之演示程序异常


3 SpringMVC异常处理之异常处理代码编写


4 SpringMVC异常处理之分析和搭建环境


5 SpringMVC拦截器之编写controller


6 SpringMVC拦截器之拦截器入门代码


7 SpringMVC拦截器之拦截器接口方法演示

============================================

07.SSM整合案例

Copyright © 2024 锦喵卫指挥使
Powered by .NET 8.0 on Kubernetes