• SpringMVC-数据绑定


    1.1绑定默认数据类型

    当前端请求的参数比较简单时,可以在后台方法的形参中直接使用Spring MVC提供的默认参数类型进行数据绑定。

    常用的默认参数类型如下。

    · HttpServletRequest:通过request对象获取请求信息。

    · HttpServletResponse:通过response处理响应信息。

    · HttpSession:通过session对象得到session中存储的对象。

    · Model/ModelMap:Model是一个接口,ModelMap是一个接口实现,作用是将model数据填充到request域。

    在web.xml中,配置Spring MVC的前端控制器等信息

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xmlns="http://java.sun.com/xml/ns/javaee" 
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
             http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
             id="WebApp_ID" version="2.5">
     <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-config.xml</param-value>
       </init-param>
       <!-- 表示容器在启动时立即加载Servlet -->
       <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>springmvc</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
    </web-app>

    在src目录下,创建Spring MVC的核心配置文件springmvc-config.xml,在该文件中配置组件扫描器和视图解析器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-4.3.xsd">
          <!-- 指定需要扫描的包 -->
          <context:component-scan base-package="com.itheima.controller"/>
       
         <!-- 视图解析器 -->
         <bean id="viewResolver"
         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
             <!-- 设置前缀 -->
             <property name="prefix" value="/jsp/"></property>
             <!-- 设置后缀 -->
             <property name="suffix" value=".jsp"></property>
         </bean>
    </beans>

    在src目录下,创建一个com.itheima.controller包,在该包下创建一个用于用户操作的控制器类UserController

    mport javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class UserController {
        @RequestMapping("/selectUser")
       public String selectUser(HttpServletRequest request) {
           String id=request.getParameter("id");
           System.out.println("id="+id);
           return "success";
       }
    }

    使用注解方式定义了一个控制器类,同时定义了方法的访问路径。在方法参数中使用了HttpServletRequest类型,

    并通过该对象的getParameter()方法获取了指定的参数。为了方便查看结果,将获取的参数进行输出打印,

    最后返回一个名为success的视图,SpringMVC会通过视图解析器在“/jsp/”路径下寻找success.jsp文件

    success.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    ok
    </body>
    </html>

    1.2绑定简单数据类型

    简单数据类型的绑定,就是指Java中几种基本数据类型的绑定,如int、String、Double等类型。这里仍然以参数id为1的请求为例,来讲解简单数据类型的绑定。

    首先修改控制器类,将控制器类UserController中的selectUser()方法的参数修改为使用简单数据类型的形式,修改后的代码如下。

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class UserController {
        @RequestMapping("/selectUser")
       public String selectUser(Integer id) {
           System.out.println("id="+id);
           return "success";
       }
    }

    1.3绑定POJO类型

    在使用简单数据类型绑定时,可以很容易地根据具体需求来定义方法中的形参类型和个数,然而在实际应用中,

    客户端请求可能会传递多个不同类型的参数数据,如果还使用简单数据类型进行绑定,那么就需要手动编写多个不同类型的参数,

    这种操作显然比较烦琐。此时就可以使用POJO类型进行数据绑定。POJO类型的数据绑定就是将所有关联的请求参数封装在一个POJO中,

    然后在方法中直接使用该POJO作为形参来完成数据绑定。接下来通过一个用户注册案例,来演示POJO类型数据的绑定,具体实现步骤如下。

    (1)在src目录下,创建一个com.itheima.po包,在该包下创建一个User类来封装用户注册的信息参数,编辑后如文件

    /*
     * 用户POJO类
     */
    public class User {
       private Integer id;//用户id
       private String username;//用户
       private Integer password;//用户密码
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Integer getPassword() {
        return password;
    }
    public void setPassword(Integer password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
    }
    }

    注册页面:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>注册</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/registerUser" method="post">
         用户名:<input type="text" name="username" /><br />&nbsp;&nbsp;&nbsp;&nbsp;码<input type="text" name="password" /><br />
      <input type="submit" value="注册"  />
    </form>
    </body>
    </html>
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.itheima.po.User;
    
    @Controller
    public class UserController {
        /*
         * 向用户注册页面跳转
         */
        @RequestMapping("/toRegister")
        public String toRegister() {
            return "register";
        }
        /*
         * 接收用户注册信息
         */
        @RequestMapping("/registerUser")
        public String registerUser(User user) {
            String username=user.getUsername();
            Integer password=user.getPassword();
            System.out.println("username="+username);
            System.out.println("password="+password);
            return "success";
        }
       
    }
    一纸高中万里风,寒窗读破华堂空。 莫道长安花看尽,由来枝叶几相同?
  • 相关阅读:
    中金所期货(future)指数
    Nginx负载均衡算法之四
    WSGI协议
    Flask 响应之定制全局有效的错误页面,之设置cookie,头信息。
    Python数据结构之栈,队列和堆
    三、Oracle 游标、存储过程、存储函数、触发器
    二、Oracle的结构学习
    一、Oracle的SQL语句学习
    oracle中的修改表结构
    eclipse编写xml文件时类名的自动补全(使用sts插件)
  • 原文地址:https://www.cnblogs.com/byczyz/p/12189313.html
Copyright © 2020-2023  润新知