本文目录导读:
随着互联网技术的不断发展,JSP(Java Server Pages)作为一款强大的服务器端技术,已经广泛应用于企业级网站的构建,本文将结合实际案例,深入浅出地解析JSP网站开发的过程,旨在帮助读者更好地理解和掌握JSP技术。
项目背景
本项目旨在开发一个企业级网站,主要功能包括:用户注册、登录、信息发布、评论互动等,在技术选型上,我们采用JSP作为服务器端技术,MySQL作为数据库,以及HTML、CSS和JavaScript等前端技术。
开发环境
1、操作系统:Windows 10
图片来源于网络,如有侵权联系删除
2、开发工具:Eclipse IDE
3、服务器:Tomcat 9.0
4、数据库:MySQL 5.7
5、数据库连接池:C3P0
开发过程
1、创建项目
在Eclipse IDE中创建一个Web项目,命名为“JSPWebsite”。
2、配置数据库连接
在项目中创建一个名为“db.properties”的配置文件,用于存放数据库连接信息,如下所示:
数据库配置信息 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8 username=root password=root
在项目中创建一个名为“DBUtil.java”的工具类,用于实现数据库连接池的创建和获取数据库连接,如下所示:
import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; public class DBUtil { private static DataSource dataSource; static { try { Class.forName("com.mysql.jdbc.Driver"); Properties properties = new Properties(); properties.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties")); dataSource = new BasicDataSource(); dataSource.setDriverClassName(properties.getProperty("driver")); dataSource.setUrl(properties.getProperty("url")); dataSource.setUsername(properties.getProperty("username")); dataSource.setPassword(properties.getProperty("password")); dataSource.setInitialSize(5); dataSource.setMaxActive(10); dataSource.setMaxIdle(5); dataSource.setMinIdle(1); dataSource.setMaxWait(10000); } catch (Exception e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }
3、创建数据库表
图片来源于网络,如有侵权联系删除
根据项目需求,创建以下数据库表:
- 用户表(user):存储用户信息,包括用户名、密码、邮箱等字段;
- 信息表(info):存储用户发布的信息,包括标题、内容、发布时间等字段;
- 评论表(comment):存储用户对信息的评论,包括评论内容、发布时间等字段。
4、实现用户注册、登录功能
在项目中创建一个名为“UserServlet.java”的Servlet类,用于处理用户注册、登录请求,如下所示:
import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/UserServlet") public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if ("register".equals(action)) { register(request, response); } else if ("login".equals(action)) { login(request, response); } } private void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); String email = request.getParameter("email"); Connection conn = null; PreparedStatement ps = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO user (username, password, email) VALUES (?, ?, ?)"; ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); ps.setString(3, email); int result = ps.executeUpdate(); if (result > 0) { request.setAttribute("message", "注册成功!"); request.getRequestDispatcher("login.jsp").forward(request, response); } else { request.setAttribute("message", "注册失败!"); request.getRequestDispatcher("register.jsp").forward(request, response); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } private void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConnection(); String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); if (rs.next()) { request.getSession().setAttribute("user", rs.getString("username")); response.sendRedirect("index.jsp"); } else { request.setAttribute("message", "用户名或密码错误!"); request.getRequestDispatcher("login.jsp").forward(request, response); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
5、实现信息发布、评论互动功能
在项目中创建一个名为“InfoServlet.java”的Servlet类,用于处理信息发布、评论互动请求,如下所示:
import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/InfoServlet") public class InfoServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if ("publish".equals(action)) { publish(request, response); } else if ("comment".equals(action)) { comment(request, response); } } private void publish(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String title = request.getParameter("title"); String content = request.getParameter("content"); Connection conn = null; PreparedStatement ps = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO info (title, content, publish_time) VALUES (?, ?, NOW())"; ps = conn.prepareStatement(sql); ps.setString(1, title); ps.setString(2, content); int result = ps.executeUpdate(); if (result > 0) { request.setAttribute("message", "发布成功!"); request.getRequestDispatcher("index.jsp").forward(request, response); } else { request.setAttribute("message", "发布失败!"); request.getRequestDispatcher("publish.jsp").forward(request, response); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } private void comment(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String info_id = request.getParameter("info_id"); String comment_content = request.getParameter("comment_content"); Connection conn = null; PreparedStatement ps = null; try { conn = DBUtil.getConnection(); String sql = "INSERT INTO comment (info_id, comment_content, publish_time) VALUES (?, ?, NOW())"; ps = conn.prepareStatement(sql); ps.setString(1, info_id); ps.setString(2, comment_content); int result = ps.executeUpdate(); if (result > 0) { request.setAttribute("message", "评论成功!"); request.getRequestDispatcher("info.jsp").forward(request, response); } else { request.setAttribute("message", "评论失败!"); request.getRequestDispatcher("info.jsp").forward(request, response); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
6、创建前端页面
根据项目需求,创建以下前端页面:
图片来源于网络,如有侵权联系删除
- 登录页面(login.jsp)
- 注册页面(register.jsp)
- 信息发布页面(publish.jsp)
- 信息详情页面(info.jsp)
7、部署项目
将项目部署到Tomcat服务器,启动服务器,访问项目地址,即可看到开发好的企业级网站。
本文通过一个企业级网站的实战案例,详细介绍了JSP网站开发的过程,通过学习本文,读者可以更好地理解和掌握JSP技术,为今后在实际项目中应用JSP技术打下坚实的基础。
标签: #jsp网站开发源码实例
评论列表