zoukankan      html  css  js  c++  java
  • SpringMVC学习笔记1

     一、简介  

      Spring MVC采用了松散耦合的可插拔组件结构,比其他的MVC框架更具有灵活性和扩展性,Spring MVC通过使用一套注解,使一个Java类成为前端控制器(Controller),不需要实现任何接口,同时,Spring MVC支持RES形式的URL请求,除此之外,Spring MVC在在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现。
       Spring MVC围绕DispatcherServlet(前端控制器)为中心展开,DispatcherServlet(前端控制器)是Spring MVC的中枢,和MVC的思想一样,它负责从视图获取用户请求并且分派给相应的处理器处理,并决定用哪个视图去把数据呈现给给用户

    二、搭建springMVC步骤  

    1、导包

    2、配置前端控制器

    Ctrl+shift+t 搜索DispatchServlet

    在web.xml中

     <!-- 配置前端控制器 -->
      <servlet>
      <servlet-name>aaa</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!-- 加载配置文件 -->
      <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring.xml</param-value><!-- 配置文件的位置   classpath代表src  spring.xml放在src目录下 -->
      </init-param>
      <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
      <servlet-name>aaa</servlet-name>
      <url-pattern>/</url-pattern><!-- 拦截规则 -->
      </servlet-mapping>

    3、扫描controller

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
        xmlns:cache="http://www.springframework.org/schema/cache"  
        xsi:schemaLocation="  
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context.xsd  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/tx  
        http://www.springframework.org/schema/tx/spring-tx.xsd  
        http://www.springframework.org/schema/jdbc  
        http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd  
        http://www.springframework.org/schema/cache  
        http://www.springframework.org/schema/cache/spring-cache-3.1.xsd  
        http://www.springframework.org/schema/aop  
        http://www.springframework.org/schema/aop/spring-aop.xsd  
        http://www.springframework.org/schema/util  
        http://www.springframework.org/schema/util/spring-util.xsd">  
      <!-- 以后会配一些需要的配置   上面为一些头部约束自带(可在官网上自行粘贴) -->
      
      <!-- 1扫描controller包 -->
      <context:component-scan base-package="com.zy.controller"></context:component-scan>
       
      
       
    </beans>  

    4、创建controller

    package com.zy.controller;
    import java.util.ArrayList;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.ModelAndView;
    import com.zy.entity.A;
    import com.zy.entity.User;
    
    
    //使用注解开发时,需要在配置文件中扫描该包,注解才能生效
    @Controller
    @RequestMapping("/zy")//请求映射
    public class MyController {//接收请求,完成响应
    //1表示控制器
    //2用@RequestMapping接收请求---接收请求的规则
    //3ModelAndView【模型和视图】
    //4ModelAndView 这个对象具备两个功能,1数据处理功能2视图跳转功能
    
    @RequestMapping("/goabc")//请求映射
    public ModelAndView go(){//类上的@RequestMapping和方法上的@RequestMapping构成一个完整的请求映射  /zy/goabc
        //响应到abc.jsp
        ModelAndView mv = new ModelAndView();
        mv.setViewName("/abc.jsp");
        return mv;
    }
    
    //接收参数
    @RequestMapping("/show")
    public ModelAndView show(int a,@RequestParam("b")int buy,String name){
        ModelAndView mv = new ModelAndView();
        //接收参数,直接在方法的括号里接收,只要名字对应上就可以
        //如果参数名不一致,可以使用@RequestParam("b")设置别名接收参数
        
        System.out.println("a的值"+a);
        System.out.println("b的值"+buy);
        System.out.println("name"+name);
        return mv;
    }
    @RequestMapping("/add")
    public ModelAndView add(User uu){//该对象会自动接收表单中与属性名匹配的值
        //痛点servlet参数必须一个一个用request接收
        //SpringMVC 支持对象接收参数
        System.out.println(uu);
        return null;
        
    }
    
    @RequestMapping("/array")
    public void arr(String []a){//数组接收(传递过来一组数据)
        
        for (String v : a) {
            System.out.println(v);
            
        }
    }
    
    //@RequestMapping("/list")//集合在springMVC中不能独立接收参数
    //public void list(ArrayList<String> list){//集合接收---失败
    //    for (String v : list) {
    //        System.out.println(v);
    //        
    //    }    
    //}
    
    
    //如果用集合接收一组数据,可以把该集合放在对象中当做属性来用,就可以接收了
    @RequestMapping("/list")
    public void list(A a){
        //数据会自动接收到a对象中的list属性上
        for (String v : a.getList()) {
            System.out.println(v);
            
        }    
    }
    
    }
    package com.zy.entity;
    
    import java.util.ArrayList;
    
    public class A {
    //用来包装集合接收参数
    private ArrayList<String> list;
    
    public ArrayList<String> getList() {
        return list;
    }
    
    public void setList(ArrayList<String> list) {
        this.list = list;
    }
    }
    <form action="zy/add" method="post">
    添加
    姓名:<input name="name"><br>
    年龄:<input name="age"><br>
    性别:<input name="sex"><br>
    地址:<input name="address"><br>
    生日:<input name="birthday"><br>
    <input type="submit">
    
    </form>
    
    数组
    <!-- 数组 -->
    <form action="zy/array" method="post">
    姓名:<input name="a"><br>
    年龄:<input name="a"><br>
    性别:<input name="a"><br>
    地址:<input name="a"><br>
    生日:<input name="a"><br>
    <input type="submit">
    </form>
    
    集合
    <form action="zy/list" method="post">
    姓名:<input name="list[0]"><br>
    年龄:<input name="list[1]"><br>
    性别:<input name="list[2]"><br>
    地址:<input name="list[3]"><br>
    生日:<input name="list[4]"><br>
    <input type="submit">
    </form>

    三、中文乱码问题

    tomcat9之下,get请求没有中文乱码

    其他版本   找到tomcat的server.xml,修改

    Post请求会产生中文乱码(SpringMVC已经准备好了编码过滤器,我们只需要配置上就ok

    在web.xml中

     <!-- / /*    /*范围更广,包括jsp的拦截 -->
    <!--
    配置编码过滤器 --> <filter> <filter-name>bbb</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>bbb</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 相关阅读:
    踏实每一个脚印——2019年12月复盘
    修改博客园markdown编辑器代码高亮风格的方法
    Hyperion: Building the Largest In memory Search Tree
    C++11——智能指针
    拷贝控制
    分布式系统常见概念
    extern和static使用
    APUE—UNIX文件系统
    C++的一些细节
    fork和僵尸进程
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11266434.html
Copyright © 2011-2022 走看看