• SpringMVC学习日志二


    一、回顾

      1.MVC流程

      

      2.SpringMVC流程

      

    二、接收的参数为日期Date时

      1.在相应的controller页追加

      @InitBinder
        public void initBinder(ServletRequestDataBinder binder){
            //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型
            binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),
                    true));
        }

       2.在实体类中添加

        @DateTimeFormat(pattern="yyyy-MM-dd")
        private Date birthday;

    三、controller进行数据保存

      1.数据保存到request作用域的方式.

      1. 使用ModelAndView,那么该方法的返回类型必须是ModelAndView
      2. 使用Model, 方法的返回值还是字符串类型。
      3. 使用Map.方法的返回值还是字符串类型。
      4. 原始的HttpServletRequest对象保存

      2 数据保存到session作用域的方式.

      1. 使用原始的HttpSession保存。
      2. 使用注解@SessionAttributes(name={key1,key2})

    四、静态资源的映射关系

      1.静态资源可以正常显示

      <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-annotation.xml</param-value>
            </init-param>
            <!-- 容器在启动时加载springmvc的配置文件。访问时加载配置文件 -->
            <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>*.do</url-pattern>
        </servlet-mapping>

      2.需要在springmvc配置文件中添加释放静态资源

      <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-annotation.xml</param-value>
            </init-param>
            <!-- 容器在启动时加载springmvc的配置文件。访问时加载配置文件 -->
            <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>
        <!-- 释放静态资源 -->
        <mvc:default-servlet-handler/>

    五、SpringMVC完成ajax功能

      1.加入jacksonjar. springmvc

      2.在响应的方法上加上@ResponseBody :java对象转化为json对象。方法的返回值可以是对象集合字符串。

    package com.zhiyou100.klb.annotation;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.zhiyou100.klb.bean.Users;
    
    @Controller //等价于<bean class="com.zhiyou100.klb.annotation.MyController" />
    @RequestMapping("ajax")
    public class AjaxController {
        
        @RequestMapping("Ajax1")
        @ResponseBody //1.把hello作为内容响应给客户
        public String ajax1(String name) {
            System.out.println(name);
            return "你好"; //把这个内容作为内容返回给回调函数    out.print()
        }
        
        @RequestMapping("Ajax2")
        @ResponseBody //1.把hello作为内容响应给客户
        public Users ajax2(String name) {
            Users user = new Users("张三","110",15,"mmm","nanjin","151");
            return user; //把这个内容作为内容返回给回调函数    out.print()
        }
        
        @RequestMapping("Ajax3")
        @ResponseBody //1.把hello作为内容响应给客户
        public List<Users> ajax3(String name) {
            Users user1 = new Users("张三","110",15,"mmm","nanjin","151");
            Users user2 = new Users("李四","110",15,"mmm","nanjin","151");
            Users user3 = new Users("王五","110",15,"mmm","nanjin","151");
            List<Users> list = new ArrayList<>();
            list.add(user1);
            list.add(user2);
            list.add(user3);
            System.out.println(name);
            return list; //把这个内容作为内容返回给回调函数    out.print()
        }
        
    }

      3.如果ajax返回的为字符串,那么就会出现乱码。解决方法主要有两种

        1.在controller文件中进行设置

    @RequestMapping(value="ajax",produces = "text/html;charset=UTF-8")

        2.在springmvc中进行设置

      <!-- 开启注解驱动,设置编码 -->
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg index="0" value="utf-8"></constructor-arg>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
  • 相关阅读:
    Jenkins运行完Test后,把ngreport生成的测试报告 拷贝到相应的文件夹
    解析xml报classnotfound错误
    配置NGReport 报告中文
    fork()调用使子进程先于父进程被调度
    堆排序
    良序原理
    高速缓冲区初始化
    Python3:输出当前目录所有目录和文件--walk()函数
    Python3:输出当前目录所有文件的第二种方式-walk()函数
    Python3:递归实现输出目录下所有的文件
  • 原文地址:https://www.cnblogs.com/kklb/p/11455855.html
Copyright © 2020-2023  润新知