Springboot+MyBatis+mysql+jsp頁面跳轉詳細示例

       SpringBoot與MyBatis搭建環境,底層數據庫爲mysql,頁面使用JSP(官網上不推薦使用jsp),完成從數據庫中查詢出數據,在jsp頁面中顯示,而且實現頁面的跳轉功能。html

項目下載連接: https://github.com/DFX339/springbootJsp.git前端

 

(1)新建數據庫 springboot_mybatisjava

   新建表 user,表的結構以下:mysql

  

 

(2)新建maven項目---web項目 springbootJsp,項目目錄結構以下git

  ApplicationMain.java : SpringBoot項目的啓動類github

  UserController.java : 前端控制類web

  UserMapper.java :持久層的接口設計spring

  User.java:實體類sql

  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頁面,結果以下:

  

相關文章
相關標籤/搜索