Java自学之路-Java中级教程-18:SpringMVC列表框select和单选框radio、多选框checkbox的处理

页面表单还有很多控件,这一节介绍比较常用的列表框和单选框、多选框。列表框就是下拉列表选项,用在有多个选择的情况,比如一大堆的国家和城市可以做成一个下拉列表供用户选择。单选框用在只能选择一种选项的情况,比如性别要么选男,要么选女。多选框即是可以多选,比如兴趣爱好可以选电脑,足球,象棋等多个。

在上一节的基础上,再新建一个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视频教程


猜你喜欢

转载自blog.csdn.net/weixin_41239710/article/details/80510454