这里搭建springboot+mybatis+jsp的工程,但是官方不推荐jsp,里面写了很多,参考:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf.但是我觉最重要的应该是jsp不利于前端开发,如果是jsp页面前端要怎么运行?怎么看写出来的效果?spring 推荐Thymeleaf,它的模版文件就是html,可以直接在浏览器打开。springboot+theamleaf我下一期再详细说明。这里先搭建springboot+mybatis+jsp。
可以到我的github链接下载项目:https://github.com/Feiyu123/SpringbootJsp.git
一.用IDEA搭建基本框架:
File ----》New Project ---》Spring Initializr
Next --》输入Artifact 和 group名称--》Next即可(打包方式为jar,也可选择war)
然后选择Web----》下一步
填上项目名和项目位置:
然后就可以看到springboot工程了,但是这样你的springboot工程是没有WEB-INF的。所以
你要在src目录下建一个webapp目录,在webapp下建一个WEB-INF目录,建web.xml文件
你可以通过Ctrl+shift+alt+S调出Project-Structure进行设置
然后访问jsp目录时会到相应目录去找,不配置是找不到的。
二.搭建垂直性三层架构
1.先处理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.lrq</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.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>
<mybatis.version>1.1.1</mybatis.version>
<mybatis.tk.version>1.0.0</mybatis.tk.version>
<pagehelper.version>1.1.0</pagehelper.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!--mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${mybatis.tk.version}</version>
</dependency>
<!--pagehelper 分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- spring boot tomcat jsp 支持开启 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<!-- servlet 依赖包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<!-- JSTL (JSP standard Tag Library) JSP 标准标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2。处理application.properties
#mvc拦截器拦截.jsp指定到/WEB-INF/jsp/找对应jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#测试连接数据库,mybatis用的是SELECT 1
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
#连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
spring.datasource.hikari.maximum-pool-size=50
#一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒以上
spring.datasource.hikari.max-lifetime=1765000
#端口号
server.port=28082
#访问路径
server.context-path=/demo
#指明mybatis实体类包位置
mybatis.type-aliases-package=com.lrq.demo.model
#指明mappers位置,可以指明多个位置
mybatis.mapper-locations=classpath:mapper/*.xml
#指明分页插件是给mysql用的
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
3.处理到dao层
根据application.properties来建立dao层,model层和xml文件
4.处理service层和它的实现类
5.处理Controller层
6.建立jsp页面
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
<%@ page language="java" import="java.util.*,com.lrq.demo.model.*"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户界面</title>
<script src="http://code.jquery.com/jquery-1.4.1.js"></script>
<script type="text/javascript">
$(function(){
$("#mainForm").submit(function (envent){
envent.preventDefault();
var form = $(this);
$.ajax({
url: form.attr("action"),
type: form.attr("method"),
data: form.serialize(),
success: function(user){
if(user){
alert( "请求用户数据成功" + user.id+user.name+user.idNo,+user.gender);
$("#usermsg").val(user.id+user.name+user.idNo,+user.gender);
}else{
alert("请求用户数据失败"+user);
}
},
error: function(){
alert("请求用户数据失败");
}
});
});
});
</script>
</head>
<body>
<form id="mainForm" enctype="multipart/form-data" action="/demo/getUser.do" method="post">
<table >
<tr>
<td><span>请输入姓名</span></td>
<td>
<input type="text" id="name" name="name"/>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="提交">
<input type="reset" name="重置">
</td>
</tr>
</table>
</form>
<input type="text" id="usermsg" name="usermsg" readonly="readonly"/>
</body>
</html>
7.浏览器访问展示