JAVA--高级基础开发

旧时模样 提交于 2020-03-16 11:25:40

某厂面试归来,发现自己落伍了!>>>

------------ SpringMVC------

第二章  请求参数的绑定

  1. 请求参数的说明:表单中的请求参数都是Key=ValueSpringmvc获取请求参数的过程就是通过表单提交的请求,作为控制器中方法参数进行绑定的。
  2. 支持的数据类型
  3. 基本数据类型参数:包括基本数据类型和 String 类型
  4. POJO 类型参数:包括实体类,以及实体类的关联类
  5. 数组和集合类型参数:ListMap、数组
  6. SpringMVC 中参数的绑定是自动实现的,所以,就必须要遵循框架的使用规则】
  7. 使用规则:
  8. 如果是基本数据类型或者 String 类型:要求参数的名称和控制器中方法的参数名称完全一致。
  9. 如果是 POJO 类型,或者它的关联类:要求表单中的参数名称和 POJO 的属性名称一致,并且控制器方法的参数类型是POJO 类型。
  10. 第一种:要求集合类型的请求参数必须在 POJO 中,在表单中请求参数名称要和 POJO 中的集合属性名称一致。如果是 List 集合的元素赋值,使用下标;如果是 Map 集合中的元素赋值,使用键值对

    第二种:接收的请求参数是 JSON 格式数据,需要通过使用注解实现【SpringMVC 框架它可以自动实现一些数据类型的自动转换,内置转换器,在org.springframework.core.convert.support 包下】 

  11. 参数绑定的应用:基本数据类型和String类型。
  12. JSP页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

    <html>

    <body>

    <h2>Hello World!</h2>

    <a href="app/baseString?id=1001&name=zhangguorong&money=13131.0">基本数据类型和String</a>

    </body>

    </html>

    Controller控制器类:

    @Controller  //此注解意思就是交给Spring容器来管理

    @RequestMapping(value ="/app")

    public class HelloWorldController {

        @RequestMapping("/baseString")

        public String baseString(Integer id,String name,Double money){

            System.out.println("id="+id+"\t name="+name+"\t money="+money);

            return "success";

        }

    }

  13. POJO参数类型的绑定
  14. @Data

    public class User implements Serializable {

        private static final long serialVersionUID = 5205810159060376996L;

        private Integer  id;

        private String   userName;

        private String   gender;

    private String   address;

    <h2>POJO参数类型的绑定</h2>

    <form   action="app/pojoind" method="post">

    用户的id:<input type="text" name="id"></br>

    用户名:<input type="text" name="userName"></br>

    用户性别:<input type="text" name="gender"></br>

    用户的地址:<input type="text" name="address"></br>

    <input  type="submit" value="提交"/>

    </form>

    @Controller  //此注解意思就是交给Spring容器来管理

    @RequestMapping(value ="/app")

    public class HelloWorldController {

        @RequestMapping("/pojoind")

        public String Controolerbase(User  user){

            System.out.println(user);

            return "success";

        }

    }

  15. 配置 Spring mvc 的编码过滤器
  16. <!--配置SpringMVC编码的过滤器-->

    <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>

  17. 准备POJO
  18. public class User implements Serializable {

        private static final long serialVersionUID = 5205810159060376996L;

        private Integer  id;

        private String   userName;

        private String   gender;

        private String   address;

        private List<String> list;

        private Map<String,String> map;

        public User(){

    }

    Jsp页面:

    <h2>POJO参数类型的绑定</h2>

    <form   action="app/pojoind" method="post">

        爱好 1<input type="text" name="list[0]"><br/>

        爱好 2<input type="text" name="list[1]"><br/>

        爱好 3<input type="text" name="list[2]"><br/>

        爱好 4<input type="text" name="list[3]"><br/>

        城市 1<input type="text" name="map['one']"><br/>

        城市 2<input type="text" name="map['two']"><br/>

        城市 3<input type="text" name="map['three']"><br/>

        城市 4<input type="text" name="map['four']"><br/>

        <input  type="submit" value="提交"/>

    </form>

    控制器:

    @Controller  //此注解意思就是交给Spring容器来管理

    @RequestMapping(value ="/app")

    public class HelloWorldController {

        @RequestMapping("/pojoind")

        public String Controolerbase(User  user){

            System.out.println(user);

            List<String>list=user.getList();

            for(String s:list){

                System.out.println(s+"----"+s);

            }

            System.out.println("========="+user.getMap());

            return "success";

        }

    }

  19. 自定义类型的转换:
  20. 例如:date 日期 2020-01-01

    定义一个类,实现 Converter 接口

    /S 表示接受的类型,T表示目标类型

    //自定义类型转换器 把日期 2020-01-01 转换成 Date

    public class DateConvert implements Converter<String, Date> {

        @Override

        public Date convert(String s) {

            DateFormat dataFormat=null;

            Date  date=null;

            if(s!=null){

                dataFormat=new SimpleDateFormat("yyyy-MM-dd");

                try {

                    date=dataFormat.parse(s);

                } catch (ParseException e) {

                    e.printStackTrace();

                }

            }

            return date;

        }

    }

  21. springmvc 配置文件中注册自定义类型转换器
  22. 简单的来说,就是把自己定义的类型转换器,注册到 springmvc 类型转换器的服务中

    <!--配置类型转换服务器对象-->

        <bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">

            <property name="converters" >

                <array>

                    <bean class="com.bdit.convert.DateConvert"></bean>

                </array>

            </property>

        </bean>

  23. <mvc:annotation-driver>标签中引用配置的类型转换器
  24. <mvc:annotation-driven conversion-service="conversionServiceFactoryBean"></mvc:annotation-driven>

  25. 使用ServletAPI
  26. SpringMVC 支持原始的 ServletAPI 对象作为控制器中方法的参数

    需要导入 Servlet API JAR

      <!--servlet-api Jar-->

        <dependency>

          <groupId>javax.servlet</groupId>

          <artifactId>javax.servlet-api</artifactId>

          <version>4.0.1</version>

          <scope>provided</scope>

    </dependency>

    @Controller  //此注解意思就是交给Spring容器来管理

    @RequestMapping(value ="/app")

    public class HelloWorldController {

    @RequestMapping("/Servlet")

    public  String  ServletApl(HttpServletRequest request, HttpServletResponse response){

            System.out.println(request.getParameter("name"));

            System.out.println(request);

            System.out.println(response);

            return "success";

        }

     

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!