1. 程式人生 > >Java自學之路-Java中級教程-18:SpringMVC列表框select和單選框radio、多選框checkbox的處理

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中级SSHæ¡æ¶é¡¹ç®å¼å设计æç¨

Java視訊教程