Springboot从易到难(基本页面显示到框架整合、数据交互)
2017-11-17 11:15
796 查看
1、创建一个基于Springboot的项目(简单页面显示不同数据)
项目结构:pon.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>ssmspringboot_test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>ssmspringboot_test</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 用于注解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
SsmspringbootTestApplication项目入口:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * 项目入口(直接启动项目即可) * @author xswl_ym */ @SpringBootApplication public class SsmspringbootTestApplication { public static void main(String[] args) { SpringApplication.run(SsmspringbootTestApplication.class, args); } }
Student实体类:
package com.example.entity; import java.io.Serializable; /** * 测试实体类 * @author xswl_ym * */ public class Student implements Serializable{ private int id; private String name; private int age; public Student() { super(); } public Student(int id, String name, int age) { super(); this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
HelloWord.java测试层:
package com.example.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.example.entity.Student; /** 1. 测试控制层 2. @author xswl_ym */ @RestController //相当于@Controller和@RequestBody 返回json @EnableAutoConfiguration public class HelloWord { @RequestMapping("/hello") public String showHello(){ return "HelloWord!"; } @RequestMapping("/entity") public Student showStudent(){ Student student = new Student(1, "showtime", 22); return student; } @RequestMapping("/map") public Map<String, Object> showMap(){ Map<String, Object> map = new HashMap<String,Object>(); map.put("username", "张无忌"); map.put("age", 15); return map; } @RequestMapping("/list") public List<Student> showList(){ List<Student> list = new ArrayList<Student>(); Student student01 = new Student(1, "showtime", 22); Student student02 = new Student(2, "showtime", 33); list.add(student01); list.add(student02); return list; } }
项目启动:在”SsmspringbootTestApplication”中右键”Run As”,选择”SpringBoot App”即可。
访问路径:http://localhost:8080//map或者http://localhost:8080//list;
2、基于上面的项目对springmvc+mybatis进行整合,实现数据交互
项目结构:pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>springboot_ssm</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot_ssm</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!--整合mybatis所需的jar --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- 用于注解开发 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--热启动:每自修改后, 程序自动启动spring Application上下文。 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <!-- 阿里jeon --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build> </project>
SsmspringbootTestApplication项目入口:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.example.controller.ProductController; /** * 项目入口(直接启动项目即可) * @author xswl_ym */ @SpringBootApplication public class SsmspringbootTestApplication { public static void main(String[] args) { SpringApplication.run(ProductController.class, args); } }
Product产品实体类 :
package com.example.entity; /** * 产品实体类 * @author xswl_ym */ public class Product { private int id; private String name; private int count; private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public Product() { super(); } public Product(int id, String name, int count, double price) { super(); this.id = id; this.name = name; this.count = count; this.price = price; } }
ProductController产品控制层:
package com.example.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSON; import com.example.entity.Product; import com.example.service.ProductService; /** * 产品控制层 * @author xswl_ym */ @RestController //证明是controller层并且返回json @EnableAutoConfiguration @ComponentScan(basePackages={"com.example.service"})//添加的注解 public class ProductController { //依赖注入 @Autowired ProductService productService; /** * @RestController代表这个类是用Restful风格来访问的,如果是普通的WEB页面访问跳转时, * 我们通常会使用@Controllervalue = "/users/{username}" 代表访问的URL是"http://host:PORT/users/实际的用户名" * method = RequestMethod.GET 代表这个HTTP请求必须是以GET方式访问 * @PathVariable将某个动态参数放到URL请求路径中 * @RequestParam指定了请求参数名称 */ @RequestMapping(value = "qp/{name}",method = RequestMethod.GET) public List<Product> queryProduct(@PathVariable String name,HttpServletResponse httpServletResponse) { System.out.println(name); List<Product> p = productService.queryProductByName(name); String json=""; try { json= JSON.toJSONString(p); //httpServletResponse.getWriter().println(json); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return p; } }
ProductService业务层接口:
package com.example.service; import java.util.List; import com.example.entity.Product; /** * 产品业务层接口 * @author xswl_ym */ public interface ProductService { public List<Product> queryProductByName(String name); }
ProductServiceImpl业务层实现类:
package com.example.service; import java.util.List; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.dao.ProductMapper; import com.example.entity.Product; /** * 产品业务层实现类 * @author xswl_ym */ @Service @MapperScan("com.example.dao") //与dao层的@Mapper二选一写上即可(主要作用是扫包) public class ProductServiceImpl implements ProductService { //依赖注入 @Autowired ProductMapper mapper; @Override public List<Product> queryProductByName(String name) { List<Product> pro = mapper.selectProductByName(name); return pro; } }
ProductMapper数据层接口:
package com.example.dao; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.ResultType; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import com.example.entity.Product; /** * 产品数据层接口 * @author xswl_ym */ @Mapper @Repository public interface ProductMapper { /** * 根据名称查询产品 * @param name 名称 * @return 返回产品实体对象 */ //@Select(" SELECT * FROM product WHERE name = #{name}") @ResultType(Product.class) List<Product> selectProductByName(@Param("name") String name); }
ProductMapper.xml数据层映射文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.example.dao.ProductMapper" > <select id="selectProductByName" resultType="com.example.entity.Product"> SELECT * FROM product WHERE name = #{name} </select> </mapper>
application.properties文件配置:
#mysql spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.jpa.database = mysql #tomcat server.port=8080 #Mybatis扫描(配置xml模式使用,决定是否使用映射文件) mybatis.mapper-locations=classpath*:mapper/*.xml #起别名。可省略写mybatis的xml中的resultType的全路径 mybatis.type-aliases-package=com.example.pojo
注意:数据层有两种处理方法:分别是使用映射文件和注解开发;
映射文件:在application.properties中配置扫描”mybatis.mapper-locations=classpath*:mapper/*.xml”;
注解开发:将application.properties的扫描删掉,直接在数据层接口中用注解写,如:@Select、@Insert;
restful.html前台页面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> //查询的内容 function quary(){ var str = $("#name").val(); $.ajax({ url:"qp/"+str, type:"get", success : function(data) { //i循环的次数 value对象 id,name等是属性 <接收list> $.each(data, function(i, value) { $("#remark").append( " <tr><td>" + value.id + "</td><td>" + value.name + "</td><td>" + value.count + "</td><td>" + value.count + "</td></tr>"); }); }, error:function(){ alert("没有查询到该商品"); } }); } </script> </head> <body> <form action=""><!-- 在text文本中加入onchange="quary()"属性为按tab后查找,而onkeydown="EnterPress()"为回车键事件 --> 查询:<input type="text" id="name"/><input type="button" value="查询" onclick="quary();"/> <table class="table table-striped" id="remark"> <tr> <td>编号</td> <td>名称</td> <td>总数</td> <td>价格</td> </tr> </table> </form> </body> </html>
数据库生成代码:
-- 创建数据库 create database `test`; use `test`; -- 建表 CREATE TABLE `product` ( `Id` int NOT NULL PRIMARY key auto_increment, `name` varchar(20) NULL , `count` int(11) NULL , `price` double(10,0) NULL ); INSERT into product(name,count,price) values('张三',20,11); INSERT into product(name,count,price) values('李四',15,22); INSERT into product(name,count,price) values('王五',16,33); INSERT into product(name,count,price) values('麻子',17,44); INSERT into product(name,count,price) values('遛鸟',18,55);
项目启动:在”SsmspringbootTestApplication”中右键”Run As”,选择”SpringBoot App”即可。
访问路径:”http://localhost:8080/qp/张三(name属性)”直接访问数据库数据
或”http://localhost:8080/restful.html“在页面中查询。
3、如何从Springboot跳转到jsp页面:
在pom.xml文件中继续设置依赖项:<!-- springboot开发jsp需要的jar包 S --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- springboot开发jsp需要的jar包 E -->
application.properties文件中配置:
# 配置jsp文件的位置,默认位置为:src/main/webapp spring.mvc.view.prefix: /WEB-INF/jsp/ spring.mvc.view.suffix: .jsp
Controller控制层文件中配置:
@RequestMapping("/mvjsp") public ModelAndView mvjsp() { ModelAndView mv=new ModelAndView("/show1"); return mv; }
最后启动项目并访问路径:”https://localhost:8080/mvjsp“;
注意:如果出现jar报路径错误直接打开对应路径,删除ecj文件夹,然后重新加载pom.xml。
(可能要加载多次)
友情链接:
http://blog.csdn.net/xpf_user/article/details/78557782;
相关文章推荐
- Spring boot 整合SSM框架三层架构并前后台restful风格交互
- 我的第一个整合elasticsearch\web的基于springboot框架的页面 7ff0
- Spring boot分页显示数据库中数据(不刷新页面)
- 利用springboot,mybatis和luncene整合创建博客系统(只给出全数据库搜索并显示在搜索页面)
- Storm框架:Storm整合springboot
- redis中的基本数据类型,以及在Spring-Boot对Redis的基本使用
- spring boot实现上传图片并在页面上显示
- 将后台数据显示到前台页面的方法springmvc+hibernate+spring
- Spring boot学习(二)页面模板与MySQL交互
- Spring boot集成Swagger2,解决页面不显示的问题
- (开源项目)基于springboot的后台管理系统基本框架
- spring ssm框架整合redis,用来存储一些常用校验数据
- SSH框架,AjaxJson显示数据,项目框架搭建;注意action跳转不用叹号,springMVC和springAnnotation要修改spring配置文件
- Spring Boot整合Swagger框架示例项目。
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能(二)
- spring boot 整合redis对查询数据做缓存( 利用spring的AOP技术)
- Spring Boot系列(十五) 安全框架Apache Shiro(一)基本功能
- 微信小程序如何与java后台交互,获取json数据显示到页面,求大神指点
- 最新spring boot搭建,整合jsp页面以及打war包配置
- Spring Boot之旅:Java安全框架Apache Shiro基本配置(一)