spring-mvc-1

一. SpringMVC的基本搭建

  1. 引入pom文件

    	<dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
        </dependencies>
    
  2. 配置spring的注解扫描

    <!--添加注解扫描-->
    <context:component-scan base-package="com.jiang"></context:component-scan>
    
  3. web.xml中配置前端控制器

    <!--配置前端控制器-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- /:除了.jsp请求,其他都拦截
             *:所有请求都拦截-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    二. SpringMVC请求/响应处理

    1. web.xml
    <!--get请求的中文乱码解决方式:在tomcat的conf目录下的servlet.xml
        <Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8" />-->
        <!--post请求的中文乱码解决方式-->
        <!--配置编码过滤器 CharacterEncodingFilter 解决中文POST乱码问题 一定要写在所有过滤器前面-->
        <filter>
            <filter-name>characterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <!--encoding 编码格式-->
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <!-- 同时开启请求和响应的编码设置-->
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <!--配置拦截哪些请求进行过滤-->
        <filter-mapping>
            <filter-name>characterEncodingFilter</filter-name>
            <!--拦截规则-->
            <!--<url-pattern></url-pattern>  根据url请求进行匹配  *
                <servlet-name>  具体制定过滤哪个servlet
            -->
            <servlet-name>springmvc</servlet-name>
    <!--        <url-pattern>/*</url-pattern>-->
        </filter-mapping>
    
        <!--处理HTML不支持rest中PUT和DELETE -->
        <filter>
            <filter-name>methodFilter</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>methodFilter</filter-name>
            <servlet-name>springmvc</servlet-name>
        </filter-mapping>
    
    1. spring.xml

       <!--
          此配置表示 我们自己配置的请求由controller来处理,但是不能请求的处理交由tomcat来处理
          静态资源可以访问,但是动态请求无法访问
          -->
          <mvc:default-servlet-handler/>
          <!--保证静态资源和动态请求都能够访问-->
          <mvc:annotation-driven></mvc:annotation-driven>
          <!--
          将映射的地址直接指向静态资源文件夹,springmvc将不会将此映射作为handler-->
          <!--<mvc:resources mapping="/images/**" location="/images/"/>-->
      
      <!--默认视图解析器 -  配上前缀和后缀  简化 逻辑视图名称-->
          <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" name="viewResolver">
              <property name="prefix" value="/WEB-INF/jsp/"/>
              <property name="suffix" value=".jsp"/>
          </bean>
      
      	<!--视图控制器(立即访问) path 需要映射的路径   view-name对应的视图名称-->
          <mvc:view-controller path="/" view-name="index"></mvc:view-controller>
          <mvc:view-controller path="/main" view-name="param"></mvc:view-controller>
      
    2. jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
          <title>param测试</title>
      </head>
      <body>
      <a>简单参数测试</a>
      <form action="${pageContext.request.contextPath}/user" method="post">
          姓名:<input type="text" name="name"/>
          <input type="submit" value="提交">
      </form>
      
      <h2>复杂参数测试</h2>
      <form action="${pageContext.request.contextPath}/param?id=1" method="post">
          姓名:<input type="text" name="name"/><p></p>
          爱好:<input type="checkbox" name="hobbies[0]" value="打篮球"/>打篮球
          <input type="checkbox" name="hobbies[1]" value="读书"/>读书
          <input type="checkbox" name="hobbies[2]" value="编程"/>编程<p/>
          外号:<input type="checkbox" name="alias" value="小江"/>小江
          <input type="checkbox" name="alias" value="灿哥"/>灿哥
          <input type="checkbox" name="alias" value="阿灿"/>阿灿<p/>
          高中老师:<input type="checkbox" name="teachers['数学']" value="张灿明"/>张灿明
          <input type="checkbox" name="teachers['英语']" value="阙笑梅"/>阙笑梅
          <input type="checkbox" name="teachers[语文]" value="简金荣"/>简金荣<p/>
          理想女友:<input type="text" name="grilFriend.name"/>
          <input type="submit" value="提交"><p/>
      </form>
      <h2>rest风格测试</h2>
      <a>GET</a>
      <form action="${pageContext.request.contextPath}/rest/1" method="get">
          姓名:<input name="name" />
          <input type="submit" value="提交">
      </form>
      <a>POST</a>
      <form action="${pageContext.request.contextPath}/rest/1" method="post">
          姓名:<input name="name" />
          <input type="submit" value="提交">
      </form>
      <a>PUT</a>
      <form action="${pageContext.request.contextPath}/rest/1" method="post">
          <input type="hidden" value="put" name="_method">
          姓名:<input name="name" />
          <input type="submit" value="提交">
      </form>
      <a>DELETE</a>
      <form action="${pageContext.request.contextPath}/rest/1" method="post">
          <input type="hidden" value="delete" name="_method">
          姓名:<input name="name" />
          <input type="submit" value="提交">
      </form>
      
      </body>
      </html>
      
      
    3. Controller

      @Controller
      public class PathController {
          @RequestMapping("/user")
          public String path01(@RequestParam(value = "name",required = false) String name){
              System.out.println(name);
              return "/index.jsp";
          }
      
          @RequestMapping("/param")
          public String getUser(@RequestParam("id") Integer id, User user){
              System.out.println(id);
              System.out.println(user);
              return "/index.jsp";
          }
          @RequestMapping(value = "/rest/{id}",method = RequestMethod.GET)
          public String getUser2(@PathVariable Integer id, User user, Map model){
              model.put("type","Map类型");
              System.out.println("查询用户");
              System.out.println(user);
              return "index";
          }
          @PostMapping("/rest/{id}")
          public String addUser(@PathVariable Integer id, User user, HttpServletRequest request){
              request.setAttribute("type","request类型");
              System.out.println("添加用户");
              System.out.println(user);
              return "index";
          }
          @PutMapping("/rest/{id}")
          public String updateUser(@PathVariable Integer id, User user, HttpSession session){
              session.setAttribute("type","HttpSession类型");
              System.out.println("更新用户");
              System.out.println(user);
              return "redirect:/";
          }
          @Autowired
          HttpSession session;
          @DeleteMapping("/rest/{id}")
          public String deleteUser(@PathVariable Integer id, User user){
              session.setAttribute("type","HttpSession类型2");
              System.out.println("删除用户");
              System.out.println(user);
              return "redirect:/";
          }
      
      }
      
posted @ 2021-03-14 15:51  阿灿呀  阅读(67)  评论(0)    收藏  举报