1. 简介
JSP(Java Server Pages)是一种动态网页开发技术,它可以将 Java 代码嵌入到 HTML 页面中,从而实现灵活的动态内容生成。MSSQL(Microsoft SQL Server)是微软公司推出的一种关系型数据库管理系统,它在安全性、可靠性、性能等方面表现优异。本文将介绍如何使用 JSP 和 MSSQL 共同构建一个空间新星应用,实现用户登录、数据查询、数据录入等功能。
2. 环境搭建
2.1 安装 JDK 和 Tomcat
JSP 是基于 Java 技术实现的,因此需要先安装 JDK(Java Development Kit)。Tomcat 是一个开源的 Web 应用服务器,可以运行 JSP 程序。首先需要从 Oracle 官网下载并安装 JDK,然后从 Tomcat 官网下载并解压 Tomcat。
$ java -version
java version "1.8.0_271"
$ tar -zxvf apache-tomcat-9.0.39.tar.gz
$ cd apache-tomcat-9.0.39/bin
$ chmod +x *.sh
$ ./startup.sh
在启动 Tomcat 后,打开浏览器,访问 http://localhost:8080 可以看到 Tomcat 的欢迎页面,表示 Tomcat 已经成功安装并运行。
2.2 安装 MSSQL
接下来需要安装 MSSQL,可以先下载免费的开发者版(Developer Edition),这个版本虽然不适用于生产环境,但对于开发人员是够用的。安装过程中需要创建一个系统管理员账户和一个用于访问数据库的账户。
安装完成后,可以使用 SQL Server Management Studio(SSMS)工具连接到数据库,创建数据库和数据表。以下是一个示例的 SQL 语句,用于创建一个名为 Students 的数据表,包含学生的姓名和年龄两个字段:
CREATE DATABASE SpaceNewStar;
USE SpaceNewStar;
CREATE TABLE Students (
Name VARCHAR(50),
Age INT
);
3. 用户登录
用户登录是大多数应用的必要功能,以下是一个简单的 JSP 页面示例,包含用户名和密码的输入框:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
</head>
<body>
<form action="login.jsp" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username"><br>
<label for="password">Password:</label>
<input type="password" name="password" id="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
在用户点击提交按钮后,将调用 login.jsp 页面处理用户输入的信息。以下是一个示例的 login.jsp 页面,它将检查输入的用户名和密码是否正确,如果正确则跳转到 welcome.jsp 页面,否则返回登录页面。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
</head>
<body>
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;database=SpaceNewStar;user=sa;password=secret");
PreparedStatement stmt = conn.prepareStatement(
"SELECT COUNT(*) FROM Users WHERE username=? AND password=?");
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
rs.next();
int count = rs.getInt(1);
if (count == 1) {
session.setAttribute("username", username);
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("login.jsp");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
该页面首先获取用户输入的用户名和密码,然后连接到数据库,查询是否存在一个用户名和密码都匹配的记录。如果存在,则将用户名保存到会话(session)中,并跳转到 welcome.jsp 页面;否则返回登录页面。需要注意的是,在实际应用中应该使用加密的密码,并在输入框中使用 CSRF(Cross-Site Request Forgery)防护技术,以确保网站的安全性。
4. 数据查询
数据查询是大多数应用的主要功能之一,以下是一个简单的 JSP 页面示例,可以查询学生的姓名和年龄:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Query</title>
</head>
<body>
<form action="query.jsp" method="post">
<input type="submit" value="Query">
</form>
<%
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;database=SpaceNewStar;user=sa;password=secret");
PreparedStatement stmt = conn.prepareStatement(
"SELECT Name, Age FROM Students");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
out.println(rs.getString("Name") + " " + rs.getInt("Age") + "<br>");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
该页面包含一个按钮,点击该按钮将调用 query.jsp 页面查询数据库中所有学生的姓名和年龄,并将结果显示在页面上。以下是 query.jsp 页面的示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;database=SpaceNewStar;user=sa;password=secret");
PreparedStatement stmt = conn.prepareStatement(
"SELECT Name, Age FROM Students");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
out.println(rs.getString("Name") + " " + rs.getInt("Age") + "<br>");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
该页面的代码也是连接到数据库,查询学生的姓名和年龄,并将结果显示在页面上。需要注意的是,在实际应用中应该使用 limit 和分页技术来显示大量数据,以保证页面的响应速度。
5. 数据录入
数据录入是大多数应用的必要功能之一,以下是一个简单的 JSP 页面示例,可以录入学生的姓名和年龄:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Input</title>
</head>
<body>
<form action="input.jsp" method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name"><br>
<label for="age">Age:</label>
<input type="text" name="age" id="age"><br>
<input type="submit" value="Input">
</form>
</body>
</html>
该页面包含一个表单,可以输入学生的姓名和年龄,并将其提交到 input.jsp 页面进行处理。以下是 input.jsp 页面的示例代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Input</title>
</head>
<body>
<%
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;database=SpaceNewStar;user=sa;password=secret");
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO Students (Name, Age) VALUES (?, ?)");
stmt.setString(1, name);
stmt.setInt(2, age);
stmt.executeUpdate();
conn.close();
out.println("Input success.");
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
该页面首先获取输入的姓名和年龄,然后连接到数据库,将学生的姓名和年龄插入到 Students 表中。需要注意的是,应该使用数据库事务技术和 XSS(Cross-Site Scripting)防护技术,以确保数据的安全性。
6. 总结
本文介绍了如何使用 JSP 和 MSSQL 共同构建一个空间新星应用,实现用户登录、数据查询、数据录入等功能。JSP 可以将 Java 代码嵌入到 HTML 页面中,从而实现灵活的动态内容生成;MSSQL 在安全性、可靠性、性能等方面表现优异。请注意在实际应用中,应该使用分页和事务技术等措施保护数据的完整性和安全性。