jsp+mysql在线留言系统包含登录注册找回密码等功能
项目结构如下图所示
web.xml如下
<!-- q-q-:274071845-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.company.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DmServlet</servlet-name>
<servlet-class>com.company.servlet.DmServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DmServlet</servlet-name>
<url-pattern>/DmServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>SpeakServlet</servlet-name>
<servlet-class>com.company.servlet.SpeakServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SpeakServlet</servlet-name>
<url-pattern>/SpeakServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.company.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/UserServlet</url-pattern>
</servlet-mapping>
</web-app>
登录页面代码
<form method="post" action="UserServlet">
<table>
<tr><input type="hidden" name="type" value="login"/>
<td>用户名:</td>
<td><input type="text" name="username" id="username" placeholder="请输入用户名"/></td>
</tr>
<tr>
<td colspan="2">
<div id="divUser"></div>
</td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" placeholder="请输入密码"/></td>
</tr>
<tr>
<td colspan="1">
<input type="submit" value="登录" id="login"/></td>
<td colspan="1">
<input type="button" value="找回密码" id="register" onclick="window.location.href='getpassword.jsp'"/>
<input type="button" value="注册" id="login" onclick="window.location.href='register.jsp'"/>
</td>
</tr>
<tr>
<td colspan="2">
<div style="color: red">${msg}</div>
</td>
</tr>
</table>
</form>
用户servlet
package com.company.servlet;
import com.company.dao.UserDao;
import com.company.model.Student;
import com.company.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class UserServlet extends HttpServlet {
private UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String type = req.getParameter("type");
if(type.equals("register")) {
register(req,resp);
}
if(type.equals("userlist")) {
userlist(req,resp);
}
if(type.equals("logout")) {
logout(req,resp);
}
if(type.equals("login")) {
login(req,resp);
}
if(type.equals("delete")) {
delete(req,resp);
}
if(type.equals("updatepassword")) {
updatepassword(req,resp);
}
if(type.equals("getpassword")) {
getpassword(req,resp);
}
}
//验证密码问题
private void getpassword(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String problem = req.getParameter("problem");
Student user = new Student();
user.setProblem(problem);
String name = userService.queryNamebyproblem(problem);
if(name.equals("")) {
req.setAttribute("msg","密码问题输入错误");
req.getRequestDispatcher("getpassword.jsp").forward(req,resp);
}else {
req.setAttribute("name",name);
req.getRequestDispatcher("updatepassword.jsp").forward(req,resp);
}
}
//更新密码
private void updatepassword(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String password = req.getParameter("password");
String rePassword = req.getParameter("rePassword");
if (!password.equals(rePassword)){
req.setAttribute("msg","两次输入密码不一致");
req.getRequestDispatcher("updatepassword.jsp").forward(req,resp);
}else {
Student user = new Student();
user.setName(name);
user.setPassword(password);
userService.updatepassword(user);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}
//删除用户
private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String name = req.getParameter("name");
try {
userService.del(name);
resp.sendRedirect("UserServlet?type=userlist");
} catch (Exception e) {
userService.del(name);
resp.sendRedirect("UserServlet?type=userlist&msg=no");
}
}
//登录
private void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
String username = req.getParameter("username");
String password = req.getParameter("password");
if (username.equals("") || password.equals("")) {
req.setAttribute("msg", "用户名或密码不能为空");
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
if (!userService.login(username,password)){
req.setAttribute("msg", "用户或密码错误!");
req.getRequestDispatcher("index.jsp").forward(req, resp);
}else {
req.getSession().setAttribute("username",username);
req.getRequestDispatcher("main.jsp").forward(req, resp);
}
}
//登出
private void logout(HttpServletRequest req, HttpServletResponse resp) {
req.getSession().invalidate();
try {
req.getRequestDispatcher("index.jsp").forward(req, resp);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//用户列表
private void userlist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
UserDao userDao = new UserDao();
String qname = req.getParameter("qname");
if(qname==null) {
qname="";
}
String msg = req.getParameter("msg");
if(msg==null) {
msg="";
}
if(msg.equals("no")) {
req.setAttribute("msg", "无法删除,名下有留言");
}
List<Student> userList = userDao.querybyname(qname);
req.setAttribute("userList", userList);
req.setAttribute("qname", qname);
req.getRequestDispatcher("list.jsp").forward(req, resp);
}
//注册用户
public void register(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String rePassword = req.getParameter("rePassword");
String problem = req.getParameter("problem");
if (!password.equals(rePassword)){
req.setAttribute("msg","两次输入密码不一致");
req.getRequestDispatcher("register.jsp").forward(req,resp);
}else {
Student user = new Student();
user.setName(username);
user.setPassword(password);
user.setProblem(problem);
userService.add(user);
req.getRequestDispatcher("index.jsp").forward(req,resp);
}
}
}
EncodingFilter.java
package com.company.filter;
import javax.servlet.*;
import java.io.IOException;
public class EncodingFilter implements Filter {
public EncodingFilter(){
System.out.println("过滤器构造");
}
public void destroy() {
System.out.println("过滤器销毁");
}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8"); //将编码改为utf-8
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("过滤器初始化");
}
}