SpringBoot与MyBatis搭建环境,底层数据库为mysql,页面使用JSP(官网上不推荐使用jsp),完成从数据库中查询出数据,在jsp页面中显示,并且实现页面的跳转功能。

项目下载链接: https://github.com/DFX339/springbootJsp.git

(1)新建数据库 springboot_mybatis

  新建表 user,表的结构如下:

  

(2)新建maven项目---web项目 springbootJsp,项目目录结构如下

  ApplicationMain.java : SpringBoot项目的启动类

  UserController.java : 前端控制类

  UserMapper.java :持久层的接口设计

  User.java:实体类

  UserIService.java:业务层接口

  UserService.java: 业务层接口实现类

  mapper/UserMapper.xml:UserMapper接口对应的xml文件,里面是sql语句

  application.properties :这是SpringBoot的默认配置文件名,存放在resources目录下。 必须命名为application.properties,否则读取不了 需要另外配置

  showUser.jsp : 访问findById方法返回的页面

  skipped.jsp: 从showUser.jsp页面请求/skip方法跳转到此页面

  pom.xml:maven项目的配置文件

  

  

  

(3)springboot的配置文件: application.properties   (放在src/main/resources目录下,会自动读取)

#指定跳转的前缀,这里表示所有的页面都存放在/WEB-INF/jsp文件下
spring.mvc.view.prefix=/WEB-INF/jsp/
# 指定跳转页面的后缀,这里表示所有的页面都是jsp页面
spring.mvc.view.suffix=.jsp
#指定跳转的前缀
spring.mvc.view.prefix=/WEB-INF/jsp/
# 指定跳转页面的后缀
spring.mvc.view.suffix=.jsp #访问的项目名
server.context-path=/SpringbootJsp #数据库的配置
spring.datasource.driver-class-name =com.mysql.jdbc.Driver
spring.datasource.url =jdbc:mysql://localhost:3306/springboot_mybatis
spring.datasource.username =root
spring.datasource.password =root #mybatis配置文件的配置
mybatis.typeAliasesPackage=SpringBoot_jsp.springbootJsp.pojo
mybatis.mapperLocations=classpath:/mapper/UserMapper.xml

(4)ApplicationMain.java : SpringBoot项目的启动类

package SpringBoot_jsp.springbootJsp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* SpringBoot的启动类
* 自动启动内置的tomcat
* @author Administrator
*
*/
@SpringBootApplication
@EnableAutoConfiguration
public class ApplicationMain { public static void main(String[] args) {
SpringApplication.run(ApplicationMain.class,args);
} }

(5)UserController.java : 前端控制类

使用@Controller注解,可以跳转到jsp、html页面,也可以返回json数据

需要返回json数据的时候,在方法上添加@ResponseBody注解

package SpringBoot_jsp.springbootJsp.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import SpringBoot_jsp.springbootJsp.pojo.User;
import SpringBoot_jsp.springbootJsp.service.UserService; /**
* 前端控制器类,调用业务层方法处理请求
* @author Administrator
*
*/
@Controller
@ComponentScan({"SpringBoot_jsp.springbootJsp.service"})
@MapperScan("SpringBoot_jsp.springbootJsp.mapper")
public class UserController { @Resource
private UserService userService; /**
* 根据id查询出对应的用户
* @param id
* @param request
* @return
*/
@RequestMapping("/findById")
public String findById(HttpServletRequest request){
User user = userService.find(18);
request.setAttribute("user", user);
return "first/showUser";
}

   /** * 跳转到skipped.jsp
      * @param request
* @return
*/
@RequestMapping("/skip")
public String skip(HttpServletRequest request){
User user = userService.find(18);
request.setAttribute("user", user);
return "skip/skipped";
} }

(6) UserMapper.java :持久层的接口设计,使用@Mapper注解标明这是个mapper接口

package SpringBoot_jsp.springbootJsp.mapper;

import org.apache.ibatis.annotations.Mapper;

import SpringBoot_jsp.springbootJsp.pojo.User;

/**
* 持久层接口,定义增删改查方法
* @author Administrator
*
*/
@Mapper
public interface UserMapper { void insert(User user);
void delete(int id);
void edit(User user);
User find(int id);
}

(7)User.java:实体类 ,与数据库中的字段一 一对应。

package SpringBoot_jsp.springbootJsp.pojo;
/**
* 实体类
* @author Administrator
*
*/
public class User { private int id;
private String username;
private String password;
private int age; public User(){} /** setter and getter 方法 */ }

 

(8) UserIService.java:业务层接口

package SpringBoot_jsp.springbootJsp.service;

import SpringBoot_jsp.springbootJsp.pojo.User;

/**
* 业务层接口
* @author Administrator
*
*/
public interface UserIService { void insert(User user);
void delete(int id);
void edit(User user);
User find(int id);
}

(9) UserService.java: 业务层接口实现类 ,调用mapper接口中的方法完成对数据库的操作

package SpringBoot_jsp.springbootJsp.service;

import javax.annotation.Resource;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service; import SpringBoot_jsp.springbootJsp.mapper.UserMapper;
import SpringBoot_jsp.springbootJsp.pojo.User;
/**
* 业务层实现类
* @author Administrator
*
*/ @Service("userService")
@ComponentScan({"SpringBoot_jsp.springbootJsp.mapper"})
public class UserService implements UserIService { @Resource
private UserMapper userMapper; @Override
public void insert(User user) {
userMapper.insert(user);
} @Override
public void delete(int id) {
userMapper.delete(id); } @Override
public void edit(User user) {
userMapper.edit(user);
} @Override
public User find(int id) {
return userMapper.find(id);
} }

(10)mapper/UserMapper.xml:UserMapper接口对应的mapper.xml文件,里面是sql语句

<?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"> <!-- 指定工作空间,要与接口名相同,源代码没有去看,猜测应该是通过"这里的namespace.下边方法的id"来定位方法的 -->
<mapper namespace="SpringBoot_jsp.springbootJsp.mapper.UserMapper"> <!-- insert user -->
<insert id = "insert" parameterType="SpringBoot_jsp.springbootJsp.pojo.User">
INSERT INTO USER(ID,USERNAME,PASSWORD,AGE) VALUES(#{id},#{username},#{password},#{age});
</insert> <!-- update user -->
<update id="edit" parameterType="SpringBoot_jsp.springbootJsp.pojo.User">
UPDATE USER SET USERNAME=#{username} , PASSWORD=#{password} , AGE = #{age} WHERE ID=#{id}
</update> <!-- find user -->
<select id="find" parameterType="int" resultType="SpringBoot_jsp.springbootJsp.pojo.User">
SELECT ID,USERNAME,PASSWORD,AGE FROM USER WHERE ID=#{0}
</select> <!-- delete user -->
<delete id="delete" parameterType="int">
DELETE FROM USER WHERE ID=#{0}
</delete>
</mapper>

(11) showUser.jsp : 访问findById方法返回的页面

在页面发送请求使用  url="/项目名/请求名.do"

例如:<a href="/SpringbootJsp/skip.do">转到skip.jsp</a>

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>显示用户信息</title>
</head>
<body>
<h1>HELLO THIS IS SHOWUSER JSP.</h1>
<h2>${user.id }</h2>
<h2>${user.username }</h2>
<h2>${user.password }</h2>
<a href="/SpringbootJsp/skip.do">转到skip.jsp</a>
</body>
</html>

(12)skipped.jsp: 从showUser.jsp页面请求/skip方法跳转到此页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>jsp跳转</title>
</head>
<body>
<h1>Skip jsp</h1>
<a href="/SpringbootJsp/findById.do">转到showUser.jsp</a>
</body>
</html>

(13)pom.xml:maven项目的配置文件

<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>SpringBoot_jsp</groupId>
<artifactId>springbootJsp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>springbootJsp Maven Webapp</name>
<url>http://maven.apache.org</url> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <build>
<finalName>bootdemo</finalName>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${compiler.source}</source>
<target>${compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
</compilerArguments>
</configuration>
</plugin> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.source>1.7</compiler.source>
<compiler.target>1.7</compiler.target> <!-- servlet/jsp/EL (2.4/2.0/?)(2.5/2.1/2.1),(3.0/2.2/2.2),(3.1/2.3/3.0) -->
<servlet.version>3.1.0</servlet.version>
<jsp.version>2.3.1</jsp.version>
<jstl.version>1.2</jstl.version>
<junit.version>4.12</junit.version>
</properties>
<dependencies> <!-- Springboot添加视图解析器的依赖包 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency> <dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</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-configuration-processor</artifactId>
<optional>true</optional>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- freemarker jar包导入 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency> </dependencies> </project>

(14)启动项目。

进入  ApplicationMain.java

右击 --》 Run As  --》 Java Application

启动成功会出现如图结果:

(15)访问项目。

  在浏览器中通过URL访问项目。 格式:  http://主机IP:8080/application.properties中指定的server.context-path的值/@Controller标识的类指定的RequestMapping值

  例如:  http://127.0.0.1:8080/SpringbootJsp/findById

  访问结果如下:

  

  点击页面中的超链接  转到skip.jsp,进入skipped.jsp页面,结果如下:

  

   

Springboot+MyBatis+mysql+jsp页面跳转详细示例的更多相关文章

  1. 【SpringBoot】SpringBoot/MyBatis/MySql/thymeleaf/Log4j整合工程

    工程下载地址:https://files.cnblogs.com/files/xiandedanteng/MMSpringWeb20191027-1.rar 工程目录结构如图: 1.创建工程 有些网文 ...

  2. Springboot+Mybatis+MySQL实例练习时踩坑记录

    最近刚开始学习后端,直接让上手学习Springboot+Mybatis+MySQL对CRUD的实例,虽然实例不难,但是上面的三个知识我都不懂,就有点为难我了 所以经常遇到一个点卡自己很久的情况,这里列 ...

  3. JSP页面跳转方式

    JSP页面跳转方式 1.利用按钮+javascript进行跳转 <input type="button" name="button2" value=&qu ...

  4. 网站开发进阶(三十七)JSP页面跳转问题解决

    JSP页面跳转问题解决 PS:本篇博文质量欠佳,仅供个人学习之用. 前言 在做Web开发时,对别人的应用(jsp+servlet)进行服务器部署时出现了页面跳转无效的情况.但是项目在本地未出现此状况. ...

  5. JSP 页面跳转中的参数传递

    1. 从一个 JSP 页面跳转到另一个 JSP 页面时的参数传递 1)使用 request 内置对象获取客户端提交的信息 2)使用 session 对象获取客户端提交的信息 3)利用隐藏域传递数据 4 ...

  6. SpringBoot配置使用jsp页面技术

    SpringBoot配置使用jsp页面技术 1.pom配置 package配置必须为war类型 添加依赖 <packaging>war</packaging> <depe ...

  7. Jsp页面跳转和js控制页面跳转的几种方法

    Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...

  8. springboot成神之——springboot+mybatis+mysql搭建项目简明demo

    springboot+mybatis+mysql搭建项目简明demo 项目所需目录结构 pom.xml文件配置 application.properties文件配置 MyApplication.jav ...

  9. JSP页面跳转

    JSP页面跳转  RequestDispatcher.forward() 服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 ...

随机推荐

  1. HTML标签使用

    `<!-- 什么是HTML 超文本标记语言 由标签(属性和实体组成)和内容组成 --> <!-- 定义文档类型 --> <!DOCTYPE html> <!- ...

  2. spring cloud: Hystrix(三):健康指数 health Indicator

    spring cloud: Hystrix(三):健康指数 health Indicator ribbon+hystrix 当使用Hystrix时(spring-cloud-starter-hystr ...

  3. 记 linux 下面初次使用的convert 工具完成拼长图功能

    今天,遇到了一个需要把大量图片合并到一个长图的功能.本来找了各种图片处理界顶顶大佬.. “PS(手动一张张 的加).光影魔术手(批处理功能没有看到拼图功能).美图秀秀(可以有个拼图,限制30张,而且需 ...

  4. 自己动手编写IPv4地址包含关系测试的小脚本

    工作中需要对地址包含关系进行测试,现有ipaddress标准库和IPy无法满足,于是自己动手编写小脚本,主要实现== , in, <等专用功能,其他功能可以后续用到再补充,例如迭代打印网段内所有 ...

  5. python基础之 序列 pickle&json

    内容梗概: 1. 什么是序列化 2. pickle(重点) 3. shelve 4. json(重点) 5. configparser模块 1. 什么是序列化 在我们存储数据或者网络传输数据的时候. ...

  6. 【IDEA】【7】Git更新及提交

    如果是Git管理的项目,顶部会出现这样的按钮 绿色代表commit到本地 蓝色代表update最新代码 Push:推送到远程服务器:右键项目->Git->Repository->Pu ...

  7. css单位分析、颜色设置与调色板

    CSS单位分析 px:单位代表像素,1px代表一个像素点. %:设置子元素为父容器的占比. em:代表该元素中一个字体所占字符,常用在文字首行缩进.其具有继承性. rem:始终代表html中的字符所在 ...

  8. react-navigation学习笔记

    1.关于this.props.navigation.navigate()与this.props.navigation.push()的区别 navigate方法在跳转时会在已有的路由堆栈中查找是否已经存 ...

  9. cf-914D-线段树

    http://codeforces.com/contest/914/problem/D 题目大意是给出一个数列,进行两种操作,一个是将位置i的数置为x,另一个操作是询问[l,r]内的数的gcd是不是x ...

  10. Web Services的学习二

    1.SOAP简单对象访问协议 基于XML的简单协议,可让应用程序在HTTP上进行信息交换,或者说SOAP就是用于访问网络服务的协议.它独立于平台,独立于语言,很简单并可扩展,而且允许绕过防火墙. 2. ...