首页 > 编程语言 > 详细

009 - Maven创建SpringBoot,整合JSP

时间:2021-04-01 00:46:25      阅读:31      评论:0      收藏:0      [点我收藏+]

备注

不建议在SpringBoot中使用JSP。

须知

  • pom.xml中的javax.servlet.jsp.jstl是用于支持JSP标签库的,在Web2.5的容器中没有问题,单当你的容器是Web3.0或以上版本时,就会出问题。 这是个非常坑爹的问题。
  • javax.servlet.jsp.jstl会自动加载依赖servlet-api-2.5.jar, 而且会在实际运行时把支持Web3.0的3.1版本的javax.servlet-api覆盖掉。即使你在pom.xml显示的在加入3.1版本的javax.servlet-api也没用。导致SpringBoot应用抛出Runtime exception运行错误。
  • 这是一个不可调和的矛盾,要么不用javax.servlet.jsp.jstl,要么不用Web3.0。但绝大多数情况下,jstl标签库不是必须的,而Web3.0是必须的。替代方式就是不用JSP,改用Themeleaf吧

项目结构

技术分享图片

创建maven工程,选择webapp模块

技术分享图片

命名

技术分享图片

在pom.xml原有的基础上添加下面的代码

<!--导入父类依赖-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <!--web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--整合jsp-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
    <!--处理jsp-->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <!--JSTL-->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.6</version>
        <scope>provided</scope> <!---->
    </dependency>

</dependencies>

在main文件夹新建java文件夹,然后设置为Sources Root

技术分享图片

在main文件夹新建resources文件夹,设置为Resources Root。然后在resources文件夹新建application.yml文件

技术分享图片

application.yml

#配置视图解析(配置yml文件的时候需要将这个注释删除,否则会出错)
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

配置启动类(层级必须是其他业务代码的父级别)

技术分享图片

package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationRun {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationRun.class,args);
    }
}

实体类

package com.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

controller层

package com.controller;
import com.entity.Student;
import com.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/hello")
public class HelloHandler {
    @Autowired
    private StudentRepository studentRepository;
    /**
     * 一开始进入就展示所有的数据信息
     * @return
     */
    @RequestMapping("/index")
    public ModelAndView modelAndView() {
        ModelAndView m = new ModelAndView();
        m.setViewName("index");
        m.addObject("list", studentRepository.findAll());
        return m;
    }
    /**
     * 更改学生信息之前,需要先查询学生信息出来,并且学生id不可更改
     * @param id
     * @return
     */
    @GetMapping("/findById/{id}")
    public ModelAndView findById(@PathVariable("id") Integer id) {
        ModelAndView m=new ModelAndView();
        m.setViewName("update");
        m.addObject("student",studentRepository.findById(id));
        return m;
    }
    /**
     * 重定向
     *
     * return "index"; //直接跳转的话,jsp中的数据不可取出
     *
     * @param id
     * @return
     */
    @GetMapping("/deleteById/{id}")
    public String deleteById(@PathVariable("id") Integer id){
        studentRepository.deleteById(id);
        return "redirect:/hello/index";
    }
    @PostMapping("/save")
    public String save(Student student){
        studentRepository.saveOrUpdate(student);
        return "redirect:/hello/index";
    }
    @PostMapping("/update")
    public String update(Student student){
        studentRepository.saveOrUpdate(student);
        return "redirect:/hello/index";
    }
}

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>学生信息</h1>
<table>
    <tr>
        <th>学生id</th>
        <th>学生姓名</th>
        <th>学生年龄</th>
        <th>操作</th>
    </tr>
    <c:forEach items="${list}" var="student">
        <tr>
            <th>
                <td>${student.id}</td>
                <td>${student.name}</td>
                <td>${student.age}</td>
                <td>
                    <a href="/hello/findById/${student.id}">修改</a>
                    <a href="/hello/deleteById/${student.id}">删除</a>
                </td>
            </th>
        </tr>
    </c:forEach>
</table>
<a href="/save.jsp">添加学生</a>

</body>
</html>

save.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加学生信息</title>
</head>
<body>
    <%--点击提交按钮,将由/hello/save来进行请求处理--%>
    <form action="/hello/save" method="post">
        id: <input type="text" name="id"/><br/>
        name:<input type="text" name="name"/><br/>
        age:<input type="text" name="age"/><br/>
        <input type="submit" value="添加">
    </form>
</body>
</html>

update.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改学生信息</title>
</head>
<body>
    <%--点击提交按钮,将由/hello/update来进行请求处理--%>
    <form action="/hello/update" method="post">
        id: <input type="text" name="id" value="${student.id}" readonly/><br/>
        name:<input type="text" name="name" value="${student.name}"/><br/>
        age:<input type="text" name="age" value="${student.age}"/><br/>
        <input type="submit" value="修改">
    </form>
</body>
</html>

009 - Maven创建SpringBoot,整合JSP

原文:https://www.cnblogs.com/YuRong3333/p/14603865.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!