Spring Boot是一个轻量级的框架,它可以快速地构建基于Java的Web应用程序。相比于Spring Framework而言,Spring Boot带来了更加方便的配置方式,同时也提供了一些默认的配置,让开发者快速构建应用程序。但是,在默认的情况下,Spring Boot并不支持JSP作为视图层,若要使用JSP需要另外进行配置。下面就是Spring Boot中使用JSP的方法示例的完整攻略。
前置条件
在使用JSP之前,需要保证开发环境已满足以下要求:
- JDK 1.8 或以上版本
- Maven 3.3 或以上版本
- IDE(比如Intellij IDEA)或文本编辑器
步骤
步骤1:创建Spring Boot工程
使用Maven创建一个Spring Boot工程,可以通过以下命令进行创建:
mvn archetype:generate -DgroupId=com.example -DartifactId=jsp-demo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
步骤2:添加JSP支持
Spring Boot默认使用thymeleaf作为视图层,我们需要将其替换为JSP。可以通过以下三个步骤来实现:
- 在pom.xml中添加jsp、servlet-api和jsp-api依赖,代码如下:
<dependencies>
<!-- JSP依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</dependency>
</dependencies>
- 在/src/main/webapp/WEB-INF/目录下创建一个名为web.xml的配置文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
- 修改spring-boot配置文件application.properties
在Spring Boot的配置文件application.properties中,加上如下配置:
# 使用JSP作为视图层
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
步骤3:创建JSP页面
在/src/main/webapp/WEB-INF/views/目录下,创建JSP页面,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Spring Boot JSP Example</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
步骤4:创建Controller类
创建一个Controller类,代码如下:
@Controller
public class HelloWorldController {
@RequestMapping("/")
public String hello(Model model) {
model.addAttribute("message", "Hello World from JSP");
return "hello";
}
}
步骤5:运行程序
使用IDE运行Spring Boot程序,然后在浏览器中输入 http://localhost:8080/,即可看到JSP页面上出现 "Hello World from JSP" 的字样。
示例说明
下面给出两个Spring Boot中使用JSP的示例,一个是使用JSP来完成用户的注册和登录功能,另一个是使用JSP来展示图表。
示例1:用户注册和登录示例
在/src/main/webapp/WEB-INF/views/目录下创建两个JSP页面,一个是register.jsp,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>User Registration</title>
</head>
<body>
<h1>User Registration</h1>
<form action="/register" method="post">
<p>
<label>Username:</label>
<input type="text" name="username"/>
</p>
<p>
<label>Password:</label>
<input type="password" name="password"/>
</p>
<p>
<input type="submit" value="Register"/>
</p>
</form>
<p><a href="/login">Login</a></p>
</body>
</html>
另一个是login.jsp,代码如下:
<!DOCTYPE html>
<html>
<head>
<title>User Login</title>
</head>
<body>
<h1>User Login</h1>
<form action="/login" method="post">
<p>
<label>Username:</label>
<input type="text" name="username"/>
</p>
<p>
<label>Password:</label>
<input type="password" name="password"/>
</p>
<p>
<input type="submit" value="Login"/>
</p>
</form>
<p><a href="/register">Register</a></p>
</body>
</html>
创建一个User类作为数据模型,代码如下:
public class User {
private String username;
private String password;
public User() {}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
创建一个UserController类,代码如下:
@Controller
public class UserController {
private Map<String, User> users = new HashMap<>();
@GetMapping("/register")
public String register() {
return "register";
}
@PostMapping("/register")
public String doRegister(@ModelAttribute User user) {
users.put(user.getUsername(), user);
return "login";
}
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String doLogin(@ModelAttribute User user, Model model) {
if (users.containsKey(user.getUsername())) {
User savedUser = users.get(user.getUsername());
if (savedUser.getPassword().equals(user.getPassword())) {
return "success";
}
}
model.addAttribute("error", "Invalid username or password");
return "login";
}
}
上面这个示例使用JSP页面和Controller类来完成用户的注册和登录功能。用户首先访问/register页面,然后输入用户名和密码进行注册。注册功能由/doRegister映射到Controller进行处理,将注册的信息保存到users中,然后跳转到/login页面。用户访问/login页面,输入用户名和密码进行登录。登录功能由/doLogin映射到Controller进行处理,获取输入的用户名和密码,判断是否和之前注册时的信息相匹配。如果匹配成功,则跳转到/success页面。如果匹配失败,则重新回到/login页面,并在页面上显示错误信息。
示例2:图表示例
第二个Spring Boot和JSP的示例是使用JSP来展示图表。该示例使用了Google Chart的API来生成图表。
在/src/main/webapp/WEB-INF/views目录下创建一个名为chart.jsp的文件,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Google Chart Example</title>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages: ['corechart', 'bar']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Year', 'Sales', 'Expenses', 'Profits'],
['2014', 1000, 400, 200],
['2015', 1170, 460, 250],
['2016', 660, 1120, 300],
['2017', 1030, 540, 350]
]);
var options = {
title: 'Company Performance',
hAxis: {title: 'Year', titleTextStyle: {color: '#333'}},
vAxis: {minValue: 0}
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
<p><a href="/">Home</a></p>
</body>
</html>
上面这个示例使用了Google Chart的API来生成一个柱状图,数据是硬编码的。可以看到,这个JSP页面引入了Google Chart的API并设置了一些配置信息,然后通过JavaScript代码创建了一个ColumnChart并将其渲染到一个名为chart_div的div元素中。
创建一个ChartController类,代码如下:
@Controller
public class ChartController {
@GetMapping("/chart")
public String chart() {
return "chart";
}
}
上面这个示例是一个简单的Controller类,只需要处理/chart请求,并返回chart.jsp页面的名称。
运行程序后,在浏览器中输入 http://localhost:8080/chart,就可以看到生成的柱状图了。
总结
本文介绍了在Spring Boot中使用JSP的方法示例,包括添加JSP的依赖文件和修改spring-boot配置文件等。以及针对两个具体场景给出了示例说明,第一个示例是使用JSP来完成用户注册和登录功能,第二个示例是使用JSP来展示图表。希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 中使用JSP的方法示例 - Python技术站