jsp 语言 摄影社区作品在线展示与点赞实战

JSP阿木 发布于 17 天前 5 次阅读


摄影社区作品在线展示与点赞实战:基于JSP技术的实现

随着互联网的普及,摄影爱好者的数量也在不断增加。摄影社区作为一个展示摄影作品、交流摄影技巧的平台,越来越受到人们的喜爱。本文将围绕摄影社区作品在线展示与点赞功能,使用JSP技术进行实战开发,实现一个简单的摄影社区网站。

一、项目背景

摄影社区网站的主要功能包括:

1. 用户注册与登录

2. 上传摄影作品

3. 查看摄影作品

4. 点赞摄影作品

5. 用户个人中心

为了实现上述功能,我们将使用JSP作为服务器端技术,配合HTML、CSS和JavaScript进行前端展示。数据库方面,我们将使用MySQL进行数据存储。

二、技术选型

1. 服务器端:JSP

2. 数据库:MySQL

3. 前端:HTML、CSS、JavaScript

4. 开发工具:Eclipse、MySQL Workbench

三、数据库设计

我们需要设计数据库表结构。以下是摄影社区网站所需的基本表结构:

1. 用户表(users)

- user_id:用户ID(主键)

- username:用户名

- password:密码

- email:邮箱

- avatar:头像

2. 作品表(works)

- work_id:作品ID(主键)

- user_id:用户ID(外键)

- title:作品标题

- description:作品描述

- image_url:作品图片URL

- like_count:点赞数

3. 点赞表(likes)

- like_id:点赞ID(主键)

- user_id:用户ID(外键)

- work_id:作品ID(外键)

四、JSP代码实现

1. 用户注册与登录

用户注册页面(register.jsp)

jsp

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


<!DOCTYPE html>


<html>


<head>


<title>注册</title>


</head>


<body>


<form action="register.jsp" method="post">


用户名:<input type="text" name="username" required><br>


密码:<input type="password" name="password" required><br>


邮箱:<input type="email" name="email" required><br>


<input type="submit" value="注册">


</form>


</body>


</html>


用户登录页面(login.jsp)

jsp

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


<!DOCTYPE html>


<html>


<head>


<title>登录</title>


</head>


<body>


<form action="login.jsp" method="post">


用户名:<input type="text" name="username" required><br>


密码:<input type="password" name="password" required><br>


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


</form>


</body>


</html>


2. 上传摄影作品

上传作品页面(upload.jsp)

jsp

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


<%@ page import="java.sql." %>


<!DOCTYPE html>


<html>


<head>


<title>上传作品</title>


</head>


<body>


<form action="upload.jsp" method="post" enctype="multipart/form-data">


标题:<input type="text" name="title" required><br>


描述:<textarea name="description" required></textarea><br>


图片:<input type="file" name="image" required><br>


<input type="submit" value="上传">


</form>


</body>


</html>


3. 查看摄影作品

查看作品页面(works.jsp)

jsp

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


<%@ page import="java.sql." %>


<!DOCTYPE html>


<html>


<head>


<title>摄影作品</title>


</head>


<body>


<h1>摄影作品</h1>


<%


Connection conn = null;


PreparedStatement pstmt = null;


ResultSet rs = null;


try {


Class.forName("com.mysql.jdbc.Driver");


conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_community", "root", "password");


String sql = "SELECT FROM works";


pstmt = conn.prepareStatement(sql);


rs = pstmt.executeQuery();


while (rs.next()) {


String title = rs.getString("title");


String description = rs.getString("description");


String imageUrl = rs.getString("image_url");


out.println("<div>");


out.println("<h2>" + title + "</h2>");


out.println("<p>" + description + "</p>");


out.println("<img src='" + imageUrl + "' alt='" + title + "'>");


out.println("<button onclick='like(" + rs.getInt("work_id") + ")'>点赞</button>");


out.println("</div>");


}


} catch (Exception e) {


e.printStackTrace();


} finally {


try {


if (rs != null) rs.close();


if (pstmt != null) pstmt.close();


if (conn != null) conn.close();


} catch (SQLException e) {


e.printStackTrace();


}


}


%>


</body>


</html>


4. 点赞摄影作品

点赞功能实现(like.jsp)

jsp

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


<%@ page import="java.sql." %>


<%


int workId = Integer.parseInt(request.getParameter("work_id"));


Connection conn = null;


PreparedStatement pstmt = null;


try {


Class.forName("com.mysql.jdbc.Driver");


conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_community", "root", "password");


String sql = "INSERT INTO likes (user_id, work_id) VALUES (?, ?)";


pstmt = conn.prepareStatement(sql);


pstmt.setInt(1, 1); // 假设当前登录用户ID为1


pstmt.setInt(2, workId);


pstmt.executeUpdate();


response.sendRedirect("works.jsp");


} catch (Exception e) {


e.printStackTrace();


} finally {


try {


if (pstmt != null) pstmt.close();


if (conn != null) conn.close();


} catch (SQLException e) {


e.printStackTrace();


}


}


%>


5. 用户个人中心

个人中心页面(profile.jsp)

jsp

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


<%@ page import="java.sql." %>


<!DOCTYPE html>


<html>


<head>


<title>个人中心</title>


</head>


<body>


<h1>个人中心</h1>


<%


Connection conn = null;


PreparedStatement pstmt = null;


ResultSet rs = null;


try {


Class.forName("com.mysql.jdbc.Driver");


conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_community", "root", "password");


String sql = "SELECT FROM works WHERE user_id = ?";


pstmt = conn.prepareStatement(sql);


pstmt.setInt(1, 1); // 假设当前登录用户ID为1


rs = pstmt.executeQuery();


while (rs.next()) {


String title = rs.getString("title");


String description = rs.getString("description");


String imageUrl = rs.getString("image_url");


out.println("<div>");


out.println("<h2>" + title + "</h2>");


out.println("<p>" + description + "</p>");


out.println("<img src='" + imageUrl + "' alt='" + title + "'>");


out.println("</div>");


}


} catch (Exception e) {


e.printStackTrace();


} finally {


try {


if (rs != null) rs.close();


if (pstmt != null) pstmt.close();


if (conn != null) conn.close();


} catch (SQLException e) {


e.printStackTrace();


}


}


%>


</body>


</html>


五、总结

本文通过使用JSP技术,实现了摄影社区作品在线展示与点赞功能。在实际开发过程中,我们还可以添加更多功能,如评论、搜索、作品分类等。为了提高用户体验,我们还可以优化前端界面和交互效果。

通过本文的学习,读者可以了解到JSP技术在Web开发中的应用,以及如何结合数据库实现复杂的功能。希望本文对读者有所帮助。