一、首先准备好eclipse开发工具以及mysql,及其jar包,jar含mysql-jdbc,logging等
项目的源码在:点击打开链接
二、搭建项目
三、创建数据库以及表
3.1、创建数据库
3.2、创建user表
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) COLLATE utf8_bin NOT NULL,
`password` varchar(20) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`,`username`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin四
四、编写Java代码
4.1、创建User.java类
package com.yd.entity;
/**
* 用户的实体类
* @author john
* @Date 2018年2月2日
* @company yd
*/
public class User{
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
4.2、创建LoginServlet.java类
package com.yd.servlet; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; 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 com.yd.entity.User; import com.yd.utils.UserDao;
/** * login验证servlet类 * @author 2017 * @Date 2018年2月2日 * @company yd */
@WebServlet("/LoginServlet")
private static final long serialVersionUID = 1L;@SuppressWarnings("unused")protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {/* * 这是不连数据库,判断账号的存在登录进行简单的登陆/计算 * String username = request.getParameter("username"); String password = * request.getParameter("password"); String s1 = "admin"; String s2 = * "123"; * * if(username.equals(s1) && password.equals(s2)){ Cookie cookie = new * Cookie("remeberName", username); cookie.setMaxAge(60*60*24); * response.addCookie(cookie); * * HttpSession session = request.getSession(); * session.setAttribute("username",username); * //response.sendRedirect("/MyWeb_04/successful.jsp"); * request.getRequestDispatcher("/successful.jsp").forward(request, * response); * * }else{ request.setAttribute("error", "您的账号和密码不匹配,请重新输入"); * request.getRequestDispatcher("/login.jsp").forward(request, * response); } *///通过连接数据库的账户,判断账号的存在登录进行简单的登陆/计算String username = request.getParameter("username");String password = request.getParameter("password");//System.out.println(username + password);// 创建对象UserDao userdao = new UserDao();User user = UserDao.login(username, password);if (user != null) {HttpSession session = request.getSession();session.setAttribute("username", username);// response.sendRedirect("/MyWeb_04/successful.jsp");request.getRequestDispatcher("/successful.jsp").forward(request, response);} else {request.setAttribute("error", "您的账号和密码不匹配,请重新输入");request.getRequestDispatcher("/login.jsp").forward(request, response);}}}public class LoginServlet extends HttpServlet {
4.3、创建CalcServlet.java类
package com.yd.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 计算calc的servlet类 * @author 2017 * @Date 2018年2月2日 * @company yd */ @WebServlet("/CalcServlet") public class CalcServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String num1 = request.getParameter("num1"); String num2 = request.getParameter("num2"); int n1 = Integer.parseInt(num1); int n2 = Integer.parseInt(num2); int sum = n1*n2; request.setAttribute("sum", sum); request.getRequestDispatcher("/result.jsp").forward(request, response); // response.sendRedirect("/MyWeb_04/result.jsp"); } }
4.4、创建UserDao.java工具类
package com.yd.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.yd.entity.User; /** * 连接数据类 * @author 2017 * @Date 2018年2月2日 * @company yd */ public class UserDao { private static User user =null; private static Connection conn =null; public static User login(String username, String password) { try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(// "jdbc:mysql://127.0.0.1:3306/users", "root", "123"); String sql =" select * from user where username = ? and password = ? "; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); ResultSet rs = ps.executeQuery(); while(rs.next()){ user = new User(); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); } conn.close(); ps.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return user; } /*public static void main(String[] args) { User login = login("admin","123"); System.out.println(login); }*/ }
五、创建jsp页面
5.1、创建login.jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录页面</title> <style type="text/css"> #span{ color:red; font-wight:bold; } </style> </head> <body> <% String message = ""; String error = (String) request.getAttribute("error"); if(message != null){ message = error; } %> <span id="msg"><%=message %></span> <%-- <% /* 客户端下一次再访问login.jsp的时候就会带着这个Cookie,我们可以在login.jsp中获取这个Cookie * 如果这个Cookie中存在我们防止的Cookie,那么就设置到用户名的输入框 */ String rememberName = ""; Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie c : cookies){ if("remeberName".equals(c.getName())){ rememberName = c.getValue(); } } } %> --%> <form action="/MyWeb_04/LoginServlet" method="post"> 用 户:<input type="text" name="username" /><br/> 密 码:<input type="password" name="password" /><br/> <input type="submit" value="登录" /> </form> </body> </html>
5.2、创建success.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功页面</title> </head> <body> <% String username =(String)session.getAttribute("username"); if(username == null){ request.setAttribute("error", "您还未登录,登录后再来吧!"); request.getRequestDispatcher("/login.jsp").forward(request, response); return; } %> 欢迎用户<%=username %>到来 <form action="/MyWeb_04/CalcServlet" method="post"> 请输入数值:<input type="text" name="num1" /><br/> 请输入数值:<input type="text" name="num2" /><br/> <input type="submit" value="计算" /> </form> </body> </html>
5.3、创建result.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>计算结果页面</title> </head> <body> <% String username =(String)session.getAttribute("username"); if(username == null){ request.setAttribute("error", "您还未登录,登录后再来吧!"); request.getRequestDispatcher("/login.jsp").forward(request, response); return; } %> 欢迎用户<%=username %>到来<br/> <% Integer sum = (Integer)request.getAttribute("sum"); %> 计算的结果为:<%=sum %> </body> </html>
六、运行的结果图。
总结:
servlet实现用户登录功能,以及一个计算功能,及连接mysql数据库
仅供参考,有问题可以提出。
jar包的下载路径链接:https://pan.baidu.com/s/1kWfVxT9 密码:5xac