springboot使用jsp完成数据的页面展示

上一篇文章介绍了使用JdbcTemplate完成对数据库的增删改查,使用了postman工具测试了功能是否实现,这一篇介绍如何调用springboot的后台接口,将数据真正展示出来。这里使用jsp进行页面展示,虽然springboot强烈不推荐使用jsp,而是推荐使用Themeleaf,但是很多人习惯使用jsp(包括我),这里先使用jsp做springboot的入门介绍,也可以更好的理解。


还是继续在第二篇的基础上做,代码稍加修改即可,添加几处依赖,如下:


        org.apache.tomcat.embed
        tomcat-embed-jasper
        provided


        javax.servlet
        jstl
        runtime 

  
   	javax.servlet  
   	javax.servlet-api  
 


全部查询及展示的接口

@RequestMapping("/list")
	public ModelAndView  itemsList() {
		String sql = "select * from items";
		List> list = jdbcTemplate.queryForList(sql);
		ModelAndView mav = new ModelAndView("/WEB-INF/views/items.jsp");
		mav.addObject("list", list);
		return mav;
}


前台页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  




springboot学习


	 
		

这是标题:${item.title}

这是作者:${item.name}

这是内容:${item.detail}


此时我们运行http://localhost:8080/items/list,可以看到如下页面,说明已经成功了(没有任何样式,这个不是介绍的重点)



接着,实现新增的功能,后台接口如下:

/**
	 * @return
	 * 跳转到新增接界面
	 */
	@RequestMapping("/toAdd")
	public ModelAndView  toAdd() {
		ModelAndView mav = new ModelAndView("/WEB-INF/views/add.jsp");
		return mav;
	}
	

	/**
	 * 新增数据
	 * @param items
	 * @return
	 */
	@RequestMapping("/add")
	public @ResponseBody boolean  addItems(Items items) {
		String sql = "insert into items (title,name,detail) value (?,?,?)";
		Object args[] = {items.getTitle(),items.getName(),items.getDetail()};  
		int temp = jdbcTemplate.update(sql, args); 
		if(temp > 0) {
			return true;
		}
		return false;
	}


前端代码,这里使用ajax进行前后台数据的交互,引入一个jquery包:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<%
String path = request.getContextPath();
%>




springboot学习



    




在前台输入标题,姓名及内容点击提交,会提示新建成功,数据成功被写入数据库,对于修改,删除基本和新增代码基本无差别,这里就不啰嗦了。


这里做一个解释:

在使用@RestController注解时,控制器类中的方法无法直接返回jsp页面,视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

比如:这里需要返回items.jsp页面,return "items.jsp"时他直接将items.jsp作为数据返回。

因为@RestController注解相当于@ResponseBody + @Controller合在一起的作用,所以如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行,可以利用ModelAndView返回jsp视图。


ModelAndView mav = new ModelAndView("/WEB-INF/views/items.jsp");

这样配置视图的路径可能有点麻烦,很多时候我们jsp都是放在某个文件夹下的,可以在application.properties中进行统一的配置,如下:

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

这样就可以使用ModelAndView mav = new ModelAndView("items");来代替上面的写法。

你可能感兴趣的:(springboot,springboot)