页面表单还有很多控件,这一节介绍比较常用的列表框和单选框、多选框。列表框就是下拉列表选项,用在有多个选择的情况,比如一大堆的国家和城市可以做成一个下拉列表供用户选择。单选框用在只能选择一种选项的情况,比如性别要么选男,要么选女。多选框即是可以多选,比如兴趣爱好可以选电脑,足球,象棋等多个。
在上一节的基础上,再新建一个form3.jsp,表单设计如下:
这个jsp保存在/WebContent/form3.jsp。显示如下:
提交这个表单还需要增加两个参数,这里也给出需要更改的地方:
1,Person.java需要增加两个属性gender和hobby,并要生成getter和setter方法。同时,还重新生成了toString方法。
private String gender;
private String hobby;
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "Person [id=" + id + ", nation=" + nation + ", gender=" + gender + ", hobby=" + hobby + ", information=" + information + "]";
}
2,PersonJdbcTemplateDaoImpl.java的addPerson和findPersonById方法要改成:
public int add(Person person) throws Exception {
int updatedRow = this.getJdbcTemplate().update("insert into new_table (id, nation, information, gender, hobby) values (?,?,?,?,?)", person.getId(), person.getNation(), person.getInformation(), person.getGender(), person.getHobby());
return updatedRow;
}
public Person getPersonById(String id) throws Exception {
Map personrMap = this.getJdbcTemplate().queryForMap("select * from new_table where id=? limit 1", id);
Person person = new Person();
person.setId((Integer) personrMap.get("id"));
person.setNation((String) personrMap.get("nation"));
person.setInformation((String) personrMap.get("information"));
person.setGender((String) personrMap.get("gender"));
person.setHobby((String) personrMap.get("hobby"));
return person;
}
3, PersonController.java新增一个inputPerson的方法。
@RequestMapping(value = "/inputPerson", method = RequestMethod.POST) public Object inputPerson(HttpServletRequest request, HttpServletResponse response, String id, String nation, String information, String hobby, String gender) { try { Person person = new Person(); person.setId(Integer.parseInt(id)); person.setNation(nation); person.setInformation(information); person.setGender(gender); person.setHobby(hobby); personService.addPerson(person); Person personAdd = personService.findPerson(id); request.setAttribute("person", personAdd); } catch (Exception e) { e.printStackTrace(); } return "jsp/person.jsp"; }
4,要修改new_table数据表,执行的sql语句为:
ALTER TABLE `newdb`.`new_table` ADD COLUMN `gender` VARCHAR(4) NULL AFTER `information`, ADD COLUMN `hobby` VARCHAR(255) NULL AFTER `gender`;
这样再重启下Tomcat服务器,访问路径http://localhost/calculateWeb/form3.jsp,输入表单的内容点击提交按钮,即可得到结果。
<span font-size:medium;white-space:normal;"="" style="word-wrap: break-word; margin: 0px; padding: 0px;">person: Person [id=7, nation=null, gender=male, hobby=computer,football, information=This is a US person.]
如果表单的项很多,那么PersonController.java的方法参数也会变得很多,这让方法变得很长也不好看。可以用下面的方法来修改一下:
新增一个类PersonForm.java,包名为.form。
public class PersonForm { private String id; private String nation; private String information; private String hobby; private String gender; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNation() { return nation; } public void setNation(String nation) { this.nation = nation; } public String getInformation() { return information; } public void setInformation(String information) { this.information = information; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }同时修改PersonController.java的inputPerson方法。
@RequestMapping(value = "/inputPerson", method = RequestMethod.POST) public Object inputPerson(HttpServletRequest request, HttpServletResponse response, PersonForm personForm) { try { Person person = new Person(); person.setId(Integer.parseInt(personForm.getId())); person.setNation(personForm.getNation()); person.setInformation(personForm.getInformation()); person.setGender(personForm.getGender()); person.setHobby(personForm.getHobby()); personService.addPerson(person); Person personAdd = personService.findPerson(personForm.getId()); request.setAttribute("person", personAdd); } catch (Exception e) { e.printStackTrace(); } return "jsp/person.jsp"; }
重启Tomcat服务器访问表单,同样可以接收和保存表单数据。也就是参数被SpringMVC封装成了PersonForm的对象,把这些参数取出来,就可以从这个参数对象中取出来了。
Java视频教程