基于JSP和MSSQL的管理系统的构建

基于JSP和MSSQL的管理系统的构建详解

1. 前言

随着现代科技的不断提升,管理系统的开发变得越来越重要。一个高效的管理系统可以帮助企业提升工作效率,减少人力成本,提高竞争能力。本文将介绍如何利用JSP和MSSQL构建一个高效的管理系统。

2. 系统设计

2.1 数据库设计

在构建管理系统之前,首先需要设计合适的数据库结构。本系统主要包括四个主要实体:用户、角色、资源和文章。下面是数据库表的设计:

CREATE TABLE [dbo].[Users] (

[ID] INT IDENTITY (1, 1) NOT NULL,

[Username] NVARCHAR (50) NOT NULL,

[Password] NVARCHAR (50) NOT NULL,

[Email] NVARCHAR (50) NOT NULL

);

CREATE TABLE [dbo].[Roles] (

[ID] INT IDENTITY (1, 1) NOT NULL,

[Name] NVARCHAR (50) NOT NULL,

[Description] NVARCHAR (500)

);

CREATE TABLE [dbo].[Resources] (

[ID] INT IDENTITY (1, 1) NOT NULL,

[Name] NVARCHAR (50) NOT NULL,

[Description] NVARCHAR (500),

[Url] NVARCHAR (200) NOT NULL

);

CREATE TABLE [dbo].[Articles] (

[ID] INT IDENTITY (1, 1) NOT NULL,

[Title] NVARCHAR (200) NOT NULL,

[Content] NTEXT NOT NULL,

[CreateDate] DATETIME NOT NULL DEFAULT (GETDATE())

);

2.2 系统架构

系统采用MVC架构进行设计,使用JSP作为View层,Servlet作为Controller层,MSSQL作为Model层。

下图展示了整个系统的架构:

3. 系统实现

3.1 用户登录

在开发管理系统时,用户登录模块是最基本和首要的模块。在本系统中,用户登录页面的URL为“/login.jsp”,通过POST方式提交用户信息进行登录验证。

下面是用户登录页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>用户登录</title>

</head>

<body>

<form action="/LoginServlet" method="post">

<label>用户名:</label>

<input type="text" name="username"><br>

<label>密码:</label>

<input type="password" name="password"><br>

<input type="submit" value="登录">

</form>

</body>

</html>

下面是LoginServlet的代码:

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String username = request.getParameter("username");

String password = request.getParameter("password");

User user = getUserByUsernameAndPassword(username, password);

if (user != null) {

HttpSession session = request.getSession();

session.setAttribute("user", user);

response.sendRedirect(request.getContextPath() + "/index.jsp");

} else {

request.setAttribute("errorMessage", "用户名或密码错误");

request.getRequestDispatcher("/login.jsp").forward(request, response);

}

}

private User getUserByUsernameAndPassword(String username, String password) {

// 查询数据库进行验证

// ...

return user;

}

}

3.2 权限管理

在管理系统中,权限管理是非常重要的一个功能模块。本系统中,采用基于角色的权限控制,每个角色具有若干个资源的访问权限。如果用户角色中拥有访问某个资源的权限,则可以访问该资源。

下面是判断用户是否有访问某个资源的权限的核心代码:

public boolean hasPermission(int userId, String resourceName) {

String sql = "SELECT COUNT(*) FROM User u INNER JOIN UserRole ur ON u.ID=ur.UserID

INNER JOIN Role r ON ur.RoleID=r.ID

INNER JOIN RoleResource rr ON r.ID=rr.RoleID

INNER JOIN Resource res ON rr.ResourceID=res.ID

WHERE u.ID=? AND res.Name=?";

// 执行SQL查询,返回结果集中第一行第一列的值

// ...

return count > 0;

}

3.3 文章管理

文章管理是一个比较典型的增、删、改、查的功能模块。在本系统中,文章的增加、删除和修改都需要进行用户权限的验证。

下面是文章列表页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%

User user = (User)session.getAttribute("user");

if (user == null || !user.hasPermission("ArticleManagement")) {

response.sendRedirect(request.getContextPath() + "/login.jsp");

}

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>文章管理</title>

</head>

<body>

<table>

<tr><th>标题</th><th>创建日期</th><th>操作</th></tr>

<%

List<Article> articles = getAllArticles();

for (Article article : articles) {

%>

<tr>

<td><%out.print(article.getTitle());%></td>

<td><%out.print(article.getCreateDate());%></td>

<td>

<a href="/EditArticleServlet?id="<%out.print(article.getID());%>">编辑</a>

<a href="/DeleteArticleServlet?id="<%out.print(article.getID());%>">删除</a>

</td>

</tr>

<%

}

%>

</table>

</body>

</html>

下面是新增或修改文章页面的代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%

User user = (User)session.getAttribute("user");

if (user == null || !user.hasPermission("ArticleManagement")) {

response.sendRedirect(request.getContextPath() + "/login.jsp");

}

int id = Integer.parseInt(request.getParameter("id"));

Article article = getArticleById(id);

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title><%if (id > 0) out.print("编辑"); else out.print("新增");%>文章</title>

</head>

<body>

<form action="/SaveArticleServlet" method="post">

<%if (id > 0) {%>

<input type="hidden" name="id" value="<%out.print(id);%>">

<%}%>

<label>标题:</label>

<input type="text" name="title" value="<%out.print(article.getTitle());%>"><br>

<label>内容:</label>

<textarea name="content"><%out.print(article.getContent());%></textarea><br>

<input type="submit" value="保存">

</form>

</body>

</html>

4. 总结

通过以上的介绍,我们了解了如何利用JSP和MSSQL构建一个高效的管理系统。本系统采用了MVC架构,并以用户登录、权限管理和文章管理模块为例进行了详细的实现。希望本文能够对正在进行管理系统开发的读者有所帮助。

数据库标签