BS结构实现登录发帖功能
1、首先使用MySQL创建数据库,并且导入所需的jar包
2、开始分包主要分为四部分:util(连接数据库)、entity(实体类)、dao(增删改查的方法)、controller(servlet)
项目结构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-prk9IKXM-1667314728991)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20221101224200125.png)]
(1)util包(JDBC)
package com.ynlg.practice.util;
import java.sql.*;
public class JDBC {
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String URL = "jdbc:mysql://127.0.0.1:3306/db_user";
private static final String USER = "root";
private static final String PWD = "20021101";
//加载驱动
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getCon() {
Connection con = null;
try {
con = DriverManager.getConnection(URL, USER, PWD);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
//释放资源
public static void close(ResultSet rs, PreparedStatement ps, Connection con) {
try{
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (con != null) {
con.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(JDBC.getCon());
}
}
2、(entity)与数据库中的内容一一对应
package com.ynlg.practice.entity;
public class User {
private String username;
private int pwd;
private int type;
public User(){
}
public User(String username, int pwd, int type) {
this.username = username;
this.pwd = pwd;
this.type = type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getPwd() {
return pwd;
}
public void setPwd(int pwd) {
this.pwd = pwd;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
package com.ynlg.practice.entity;
public class Notice {
private int id;
private String title;
public Notice(){
}
public Notice(int id, String title) {
this.id = id;
this.title = title;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3、dao(增删改查的方法)
package com.ynlg.practice.dao;
import com.ynlg.practice.entity.User;
import com.ynlg.practice.util.JDBC;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
//查询
public User QueryDao(String username, String pwd){
User user = new User();
con= JDBC.getCon();
String sql="select * from tb_user where username=? and pwd=?";
try {
ps=con.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2,pwd);
rs =ps.executeQuery();
while (rs.next()){
user.setUsername(rs.getString("username"));
user.setPwd(Integer.parseInt(rs.getString("pwd")));
user.setType(rs.getInt("type"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBC.close(rs,ps,con);
}
return user;
}
//添加
public boolean AddDao(String title){
int i=0;
con= JDBC.getCon();
String sql="insert into tb_notice(title)values(?)";
try {
ps=con.prepareStatement(sql);
ps.setString(1,title);
i=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBC.close(rs,ps,con);
}
return i>0;
}
//删除
public boolean DeleteDao(String id){
int i=0;
con=JDBC.getCon();
String sql="delete from tb_notice where id=?";
try {
ps=con.prepareStatement(sql);
ps.setString(1,id);
i=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return i>0;
}
}
查询所有的方法
package com.ynlg.practice.dao;
import com.ynlg.practice.entity.Notice;
import com.ynlg.practice.util.JDBC;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class NoticeDao {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
//查询所有
public List<Notice> findAll(){
List<Notice> list=new ArrayList<>();
con= JDBC.getCon();
String sql="select * from tb_notice";
try {
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()){
Notice notice=new Notice();
notice.setId(rs.getInt("id"));
notice.setTitle(rs.getString("title"));
list.add(notice);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBC.close(rs,ps,con);
}
return list;
}
}
controller(servlet)
package com.ynlg.practice.controller;
import com.ynlg.practice.dao.UserDao;
import com.ynlg.practice.entity.User;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
//添加的servlet
@WebServlet(name = "AddServlet", value = "/AddServlet")
public class AddServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
UserDao userDao=new UserDao();
User user=userDao.QueryDao(username,pwd);
if(user.getUsername() == null){
request.setAttribute("info","用户名或者密码错误");
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
HttpSession session = request.getSession();
session.setAttribute("user", user);
response.sendRedirect("Query.jsp");
}
}
}
package com.ynlg.practice.controller;
import com.ynlg.practice.dao.UserDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
//判断的servlet
@WebServlet(name = "DecideServlet", value = "/DecideServlet")
public class DecideServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String add = request.getParameter("add");
UserDao userDao = new UserDao();
boolean notice = userDao.AddDao(add);
HttpSession session = request.getSession();
session.setAttribute("notice",notice);
if (notice){
request.getRequestDispatcher("ShowServlet").forward(request,response);
request.setAttribute("A","添加成功");
}else {
request.setAttribute("A","添加失败");
request.getRequestDispatcher("Query.jsp").forward(request,response);
}
}
}
package com.ynlg.practice.controller;
import com.ynlg.practice.dao.UserDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
//删除的servlet
@WebServlet(name = "DeleteServlet", value = "/DeleteServlet")
public class DeleteServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
UserDao userDao=new UserDao();
boolean b = userDao.DeleteDao(id);
if (b){
System.out.println("删除成功");
request.getRequestDispatcher("ShowServlet").forward(request,response);
}else {
System.out.println("删除失败");
}
}
}
package com.ynlg.practice.controller;
import com.ynlg.practice.dao.NoticeDao;
import com.ynlg.practice.dao.UserDao;
import com.ynlg.practice.entity.Notice;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
//展示的servlet
@WebServlet(name = "ShowServlet", value = "/ShowServlet")
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
NoticeDao noticeDao=new NoticeDao();
List<Notice> all=noticeDao.findAll();
if(all.size()>0){
request.getSession().setAttribute("list",all);
response.sendRedirect("Show.jsp");
}
}
}
书写界面
<!--书写登录界面-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="AddServlet" method="post">
用户名:<input type="text" name="username">
<br>
密 码:<input type="password" name="pwd">
<br>
<input type="submit" value="登录">
</form>
${info}
</body>
</html>
<!--书写发帖界面-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>欢迎${user.username}</h1>
<c:if test="${user.type==1}">
<form action="DecideServlet" method="post">
<input type="text" name="add">
<input type="submit" value="发帖">
</form>
</c:if>
${A}
<br>
<a href="ShowServlet">点击查看所有帖子</a>
</body>
</html>
<!---展示所有信息的界面->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>显示</title>
</head>
<body>
<table border="1">
<tr>
<td>序号</td>
<td>标题</td>
<td>操作</td>
</tr>
<c:forEach items="${list}" var="nu">
<tr>
<td>${nu.id}</td>
<td>${nu.title}</td>
<td><a href="/Practice_war_exploded/DeleteServlet?id=${nu.id}">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>