spring mvc数据绑定和表单标签的应用(附带实例)-mile米乐体育

为了让读者进一步学习数据绑定和表单标签,本节给出了一个应用范例 springmvcdemo04。该应用中实现了 user 类属性和 jsp 页面中表单参数的绑定,同时在 jsp 页面中分别展示了 input、textarea、checkbox、checkboxs、select 等标签。

应用的相关配置

在 springmvcdemo04 应用中需要使用 jstl,因此不仅需要将 spring mvc 的相关 jar 包复制到应用的 wen-inf/lib 目录下,还需要从 tomcat 的 webapps\examples\web-inf\lib 目录下将 jstl 的相关 jar 包复制到应用的 wen-inf/lib 目录下。 springmvcdemo04 的 jar 包如图 1 所示。 图 1springmvcdemo04的jar包 为了避免出现中文乱码问题,需要在 web.xml 文件中增加编码过滤器,同时将 jsp 页面编码设置为 utf-8,form 表单的提交方式必须为 post。 web.xml 的代码如下:
                     springmvc         org.springframework.web.servlet.dispatcherservlet     1                   springmvc         /                        encodingfilter                       org.springframework.web.filter.characterencodingfilter                       encoding         utf-8                   forceencoding         true                        encodingfilter         /*      
配置文件 springmvc-servlet.xml 与教程前面的示例中学习过的配置文件没有区别,这里不再赘述。

领域模型

应用中实现了 user 类属性和 jsp 页面中表单参数的绑定,user 类包含了和表单参数名对应的属性,以及属性的 set 和 get 方法。在 springmvcdemo04 应用的 src 目录下创建 pojo 包,并在该包中创建 user 类。 user 类的代码如下:
 package pojo;  public class user {     private string username;     private string[] hobby; // 兴趣爱好     private string[] friends; // 朋友     private string carrer;     private string houseregister;     private string remark;     // 省略setter和getter方法 }

service 层

应用中使用了 service 层,在 service 层使用静态集合变量 users 模拟数据库存储用户信息,包括添加用户和查询用户两个功能方法。在 springmvcdemo04 应用的 src 目录下创建 service 包,并在该包中创建 userservice 接口和 userserviceimpl 实现类。 userservice 接口的代码如下:
 package service; import java.util.arraylist; import pojo.user; public interface userservice {     boolean adduser(user u);     arraylist getusers(); }
userserviceimpl 实现类的代码如下:
 package service;  import java.util.arraylist; import pojo.user; @service public class userserviceimpl implements userservice {     // 使用静态集合变量users模拟数据库     private static arraylist users = new arraylist();      @override     public boolean adduser(user u) {         if (!"it民工".equals(u.getcarrer())) { // 不允许添加it民工             users.add(u);             return true;         }         return false;     }      @override     public arraylist getusers() {         return users;     } }

controller 层

在 controller 类 usercontroller 中定义了请求处理方法,包括处理 user/input 请求的 inputuser 方法以及处理 user/save 请求的 adduser 方法,其中在 adduser 方法中用到了重定向。 在 usercontroller 类中,通过 @autowired 注解在 usercontroller 对象中主动注入 userservice 对象,实现对 user 对象的添加和查询等操作。 通过 model 的 addattribute 方法将 user 类对象、hashmap 类型的 hobbys 对象、string[] 类型的 carrers 对象以及 string[] 类型的 houseregisters 对象传递给 view(useradd.jsp)。 在 springmvcdemo04 应用的 src 目录下创建 controller 包,并在该包中创建 usercontroller 控制器类。 usercontroller 类的代码如下:
 package controller;  import java.util.hashmap; import java.util.list; import org.apache.commons.logging.log; import org.apache.commons.logging.logfactory; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.annotation.requestmapping; import pojo.user; import service.userservice;  @controller @requestmapping("/user") public class usercontroller {     // 得到一个用来记录日志的对象,这样在打印信息的时候能够标记打印的是哪个类的信息     private static final log logger = logfactory.getlog(usercontroller.class);     @autowired     private userservice userservice;      @requestmapping(value = "/input")     public string inputuser(model model) {         hashmap hobbys = new hashmap();         hobbys.put("篮球", "篮球");         hobbys.put("乒乓球", "乒乓球");         hobbys.put("电玩", "电玩");         hobbys.put("游泳", "游泳");         // 如果model中没有user属性,useradd.jsp会抛出异常,因为表单标签无法找到         // modelattribute 属性指定的 form backing object         model.addattribute("user", new user());         model.addattribute("hobbys", hobbys);         model.addattribute("carrers", new string[] { "教师", "学生", "coding 搬运工",                 "it民工", "其他" });         model.addattribute("houseregisters", new string[] { "北京", "上海", "广州",                 "深圳", "其他" });         return "useradd";     }      @requestmapping(value = "/save")     public string adduser(@modelattribute user user, model model) {         if (userservice.adduser(user)) {             logger.info("成功");             return "redirect:/user/list";         } else {             logger.info("失败");             hashmap hobbys = new hashmap();             hobbys.put("篮球", "篮球");             hobbys.put("乒乓球", "乒乓球");             hobbys.put("电玩", "电玩");             hobbys.put("游泳", "游泳");             // 这里不需要 model.addattribute ("user", new user ()),因为 @modelattribute             // 指定 form backing object             model.addattribute("hobbys", hobbys);             model.addattribute("carrers", new string[] { "教师", "学生",                     " coding搬运工", "it民工", "其他" });             model.addattribute("houseregisters", new string[] { "北京", "上海",                     "广州", "深圳", "其他" });             return "useradd";         }     }      @requestmapping(value = "/list")     public string listusers(model model) {         list users = userservice.getusers();         model.addattribute("users", users);         return "userlist";     } }

view 层

view 层包含两个 jsp 页面,一个是信息输入页面 useradd.jsp,一个是信息显示页面 userlist.jsp。在 springmvcdemo04 应用的 web-inf/jsp 目录下创建这两个 jsp 页面。 在 useradd.jsp 页面中将 map 类型的 hobbys 绑定到 checkboxes 上,将 string[] 类型的 carrers 和 houseregisters 绑定到 select 上,实现通过 option 标签对 select 添加选项,同时表单的 method 方法需指定为 post 来避免中文乱码问题。 在 userlist.jsp 页面中使用 jstl 标签遍历集合中的用户信息 。 useradd.jsp 的代码如下:
 <%@ page language="java" contenttype="text/html; charset=utf-8"     pageencoding="utf-8"%> <%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>     insert title here                
添加一个用户

张三 李四 王五 赵六

userlist.jsp 的代码如下:
 <%@ page language="java" contenttype="text/html; charset=utf-8"     pageencoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>     用户列表                              
用户名 兴趣爱好 朋友 职业 户籍 个人描述
${user.username } ${hobby }  ${friend }  ${user.carrer } ${user.houseregister } ${user.remark }

测试应用

通过地址“http://localhost:8080/springmvcdemo04/user/input”测试应用,添加用户信息页面效果如图 2 所示。 如果在图 2 中职业选择“it民工”,添加失败。失败后还回到添加页面,输入过的信息不再输入,自动回填(必须结合 form 标签)。自动回填是数据绑定的一个优点。失败页面如图 3 所示。 图 2添加用户信息页面 图 3添加用户信息失败页面 在图 3 中输入正确信息,添加成功后重定向到信息显示页面,效果如图 4 所示。 图 4信息显示页面
展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图