Java自学之路-Java中级教程-15:SpringMVC传递页面参数及访问路径变量@PathVariable

    在前面已经使用JdbcTemplate操作过数据库,并有增删改查的操作方法add、delete、update等。如果要查询ID为某个序号的Person记录,可以使用传递参数给sql的方法来取出相应的记录。

Java中级教程-8:Spring使用JdbcTemplate操作数据库 

    

	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"));

		return person;

	}


    这里把id传给sql,通过sql语句select * from new_table where id=某个序号,就能把记录取出来并返回Person对象,并且限制仅返回一个记录 limit 1。这个方法在PersonDaoImpl.java中,那么页面中如何把想要的ID参数进来呢?这就要在PersonController中增加查询的方法。

 

	@RequestMapping(value = "/getPerson", method = RequestMethod.GET)
	public Object getPerson(HttpServletRequest request, HttpServletResponse response) {
		try {
			String id = request.getParameter("id");
			Person person = personService.getPerson(id);
			request.setAttribute("person", person);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "jsp/person.jsp";
	}


     同时,在PersonService.java的接口类和实现类中也需要有相应的方法:

public Person findPerson(String id) throws Exception;


@Override
public Person findPerson(String id) throws Exception {
return personDao.getPersonById(id);

}

    而在person.jsp中可以加入<%=request.getAttribute("person") %>一句来显示拿到的person对象。访问页面地址http://localhost/calculateWeb/findPerson?id=1可以得到一个记录person: 1,USA;显示出来。

    还可以不使用?id=1的方式传参,比如http://localhost/calculateWeb/1这样的访问地址,也可以实现传参。这需要增加如下这样的方法。

    

	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
	public Object person(HttpServletRequest request, HttpServletResponse response, @PathVariable String id) {
		try {
			Person person = personService.findPerson(id);
			request.setAttribute("person", person);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "jsp/person.jsp";
	}


    

    通过/{id}这个参数,并且在方法参数里增加@PathVariable String id这样一个参数,就可以在访问路径里直接加参数值传参。

    

Java视频教程


猜你喜欢

转载自blog.csdn.net/weixin_41239710/article/details/80469136
今日推荐