• SpringMVC-RESTRUL___CRUD知识点总结


    RESTful风格

    <!-- 携带surveyId去后台 -->
    <!-- RESTFUL风格:/xxx/23 -->
    <!-- 接收方式:@PathVariable注解 -->

    <!-- 传统风格:/xxx?surveyId=23 -->
    <!-- 接收方式:@RequestParam注解 -->

    1、导包

    commons-logging-1.1.3.jar
    spring-aop-4.0.0.RELEASE.jar
    spring-beans-4.0.0.RELEASE.jar
    spring-context-4.0.0.RELEASE.jar
    spring-core-4.0.0.RELEASE.jar
    spring-expression-4.0.0.RELEASE.jar
    spring-web-4.0.0.RELEASE.jar
    spring-webmvc-4.0.0.RELEASE.jar
    taglibs-standard-impl-1.2.1.jar
    taglibs-standard-spec-1.2.1.jar

    2、写配置

    web.xml

      <!-- 将request转发给springmvc处理 -->
      <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
        <servlet>
            <servlet-name>springDispatcherServlet</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>
    
        <!-- Map all requests to the DispatcherServlet for handling -->
        <servlet-mapping>
            <servlet-name>springDispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    <!-- 
        支持REST风格的过滤器:可以将POST请求转换为PUT或DELETE请求
        实现①    REST,简化操作
        浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,
        Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。 -->
        <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>
    /**
     * 乱码问题;
     * 请求乱码;浏览器发给服务器的数据;服务器解析出来是乱码;
     *         GET乱码;
     *             原因:tomcat连接器先收到请求地址信息和数据,因为中文在地址中带着;
     *             解决:给服务器的server.xml中8080端口配置处添加URIEncoding="utf-8";
     * 
     *         POST乱码;
     *             原因:数据在请求体中携带的,所以,tomcat不是一开始就解析请求体的;
     *             在第一次调用request.getParameter的时候解析请求体的;
     *             request.setCharacterEncoding("utf-8");
     *             利用filter原理统一解决post和响应;
     * 
     * 
     * 
     * 响应乱码;服务器发给浏览器的数据,浏览器显示出来乱码;
     *         原因:浏览器收到的数据不明确;
     *         解决:给发送数据的时候,告诉浏览器数据的内容类型,编码方式,处理方式;
     *         response.setContentType("text/html;charset=utf-8");
     * 
     * Spring解决乱码的Filter;
     * @author lfy
     *
     */
        <!-- web的三大组件都是在web.xml中配置,字符编码的filter永远都是在其他filter最前面 -->
        <!-- 具体设置要看源码 -->
        <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>
              <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>
      </filter-mapping>

    springmvc.xml

    <context:component-scan base-package="com.lamsey"></context:component-scan>
        <!-- 视图解析器解做些预处理,简化操作-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>

     使用 SpringMVC的表单标签

    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <!-- SpringMVC提供的表单标签; 1、功能强大  2、操作简单   3、动态绑定,表单的快速回显;-->
    <!--     通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显 
        path:双重功能
        1、相当于原来input的name属性<input name="username"/>
        2、动态的将path指定的值从一个对象的属性中取出来显示;
        要对form进行绑定    
                  可以通过 modelAttribute 属性指定绑定的模型属性,若没有指定该属性,
                  则默认从 request 域对象中读取 command 的表单 bean,如果该属性值也不存在,
                 则会发生错误。(Neither BindingResult nor plain target object 
           for bean name 'command' available as request attribute)
           #这里设置command
           请求域中没有一个名为command的对象;
            我们给请求域中放一个key为command的对象;path属性指定的key就会从这个对象中取出来;
    -->
        <form:form action="" method="post">
            lastName:<form:input path="lastName"/>
            email:<form:input path="email"/>
            gender:<form:input path="gender"/>
            <!--path 提交的key -->
            <!--items:指定部门的集合在哪里保存;SpringMVC会自动遍历每一项内容(deparment对象); 
                itemLabel="":指定遍历的这个对象的哪个属性作为要显示在页面的提示显示,也就是option的标签体内容
                itemValue=""-->
            department:<form:select path="department.id" 
            items="${depts }" 
            itemLabel="departmentName"
            itemValue="id"
            ></form:select>
            <input type="submit" value="提交"/>
        </form:form>

    SpringMVC中的转发和重定向

    eg:

    return "redirect:/emps";

     return "forward:/index.action";

  • 相关阅读:
    竞态与死锁
    Java-核心技术-面试整理
    接口(工厂模式&代理模式)
    switch case实现两个数的算术运算
    继承和多态举例
    字符串的逆序输出
    引用传递&值传递
    递归的使用
    构造方法的重载
    给定数组,去掉0元素后将剩下的元素赋给新的数组
  • 原文地址:https://www.cnblogs.com/limingxian537423/p/7271659.html
Copyright © 2020-2023  润新知