简单用户登录系统源代码——Servlet学习
刚刚开始学习前端,基本就是零基础,学习方法就是看网上的教程,然后从网上找一些源代码来练习。
下面的代码是我先看了Servlet实例登录(https://www.yiibai.com/servlet/example-of-login-form-in-servlet.html)中的例子,在此基础上自己联系了一下。
首先建一个项目,目录结构如下:
下面的代码是我先看了Servlet实例登录(https://www.yiibai.com/servlet/example-of-login-form-in-servlet.html)中的例子,在此基础上自己联系了一下。
首先建一个项目,目录结构如下:

首先是登录功能实现,这个是完全按照Servlet实例登录(https://www.yiibai.com/servlet/example-of-login-form-in-servlet.html)来写的,登录页面的html代码如下(可能有些细节不太一样,做后面的一些功能的时候添加或者修改了一些东西。另外这里的css不是重点,因此没有写,可以自己添加):

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js"></script> </head> <body> <div style="text-align:center;pandding-top:12px;"> <form action="login" method="post"><!-- action是入口,方法是post,post比get安全,如果不写method,默认get --> 用户名:<input type="text" name="name" /> 密码:<input type="password" name="password" /> <input type="submit" value="登录" /> <input type="reset" value="重置" /> </form> </div> <button style="position: absolute;left: 60%; padding-top: 12px" onclick="window.location.href='logon.html'">注册</button> </body> </html>

<a href="login.html">登录</a> <a href="logout">退出</a> <a href="drop.html">注销</a> <a href="profile">个人信息</a> <a href="changepwd.html">修改密码</a> <hr>
接下来是登录servlet代码,这里采用的是post方法,post相对于get方法来说较安全,不会把用户密码显示在地址栏中。
LoginServlet.java代码如下:

package com.yiibai; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet{ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); request.getRequestDispatcher("link.html").include(request, response); String name = request.getParameter("name"); String password = request.getParameter("password"); try { if(LoginDao.doLogin(name, password)) {//判断用户名与密码是否都是正确的 out.println("您已成功登陆系统!"); out.println("欢迎您,"+name); Cookie ck = new Cookie("name", URLEncoder.encode(name, "utf-8")); response.addCookie(ck); System.out.println("输入的用户名:" + ck.getValue()); System.out.println("登录:" + ck.getValue()); }else { //用户名或者密码不正确的话就提示错误,并返回登录页面 out.println("<font style='color:red;'>用户或密码错误!</font>"); request.getRequestDispatcher("login.html").include(request, response); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }
连接数据库的代码,这里数据库用的是MySQL,LoginDao.java代码如下:

package com.yiibai; 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 java.util.ArrayList; import java.util.List; public class LoginDao { static Connection con = null; //连接数据库 private static void getConnect() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost/test?useSSL=false&characterEncoding=utf8", "root", "password");//test是数据库名,password填root的密码 } catch (Exception e) { System.out.println(e); } } //用户名与密码是否均正确 public static boolean doLogin(String name, String password) throws SQLException { getConnect(); // 用户名及密码是否正确? boolean status = false; PreparedStatement ps = con.prepareStatement("SELECT * FROM servlet_user WHERE name=? AND passwd=?"); ps.setString(1, name); ps.setString(2, password); ResultSet rs = ps.executeQuery(); status = rs.next(); if(con!=null) con.close(); return status; } //用户名是否已经存在 public static boolean hasName(String name) throws SQLException { getConnect(); boolean status = false; PreparedStatement ps = con.prepareStatement("SELECT * FROM servlet_user WHERE name=?"); ps.setString(1, name); ResultSet rs = ps.executeQuery(); status = rs.next(); if(con!=null) con.close(); return status; } //添加用户信息 public static void insertInto(String name, String password, String email, String city) throws SQLException { getConnect(); PreparedStatement ps = con.prepareStatement("insert into servlet_user(name,passwd,email,city) value(?,?,?,?)"); ps.setString(1, name); ps.setString(2, password); ps.setString(3, email); ps.setString(4, city); ps.executeUpdate(); System.out.println("添加成功"); if(con!=null) con.close(); } //删除用户 public static void dropData(String name) throws SQLException { getConnect(); PreparedStatement ps = con.prepareStatement("delete from servlet_user where name=?"); ps.setString(1, name); ps.executeUpdate(); System.out.println("删除成功!"); ps.close(); con.close(); } //读取用户信息 public static List<String> getData(String name) throws SQLException { List<String> data = null; getConnect(); PreparedStatement ps = con.prepareStatement("SELECT * FROM servlet_user WHERE name=?"); ps.setString(1, name); ResultSet rs = ps.executeQuery(); while(rs.next()) { data = new ArrayList<String>(); data.add(rs.getString("email")); data.add(rs.getString("city")); } rs.close(); ps.close(); con.close(); return data; } //修改用户密码 public static void changePassword(String name, String newPassword) throws SQLException { getConnect(); PreparedStatement ps = con.prepareStatement(" update servlet_user set passwd=? where name=?"); ps.setString(1, newPassword); ps.setString(2, name); ps.executeUpdate(); System.out.println("修改成功!"); ps.close(); con.close(); } public static void main(String[] args) throws SQLException { // TODO Auto-generated method stub // System.out.println("但是会计核算: "+getData("d").size()); // insertInto("fxr","fxr","fxr@qq.com","海南"); // dropData("fxr"); // System.out.println("但是会计核算: "+hasName("d")); changePassword("d", "s"); } }
wel.html配置如下:
<display-name>LoginWithCookies</display-name> <welcome-file-list> <welcome-file>login.html</welcome-file> </welcome-file-list> <!-- 登录Servlet --> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.yiibai.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping>
运行前要建表,用来存几条用户名跟密码的数据以便使用,另外有两个包不要忘记加build path,mysql-connector-java-8.0.11.jar还要放到tomcat的lib文件下,不然还是会报错。
建表语句如下,这个也是从Servlet实例登录(https://www.yiibai.com/servlet/example-of-login-form-in-servlet.html)来的:
DROP TABLE IF EXISTS `servlet_user`;
CREATE TABLE `servlet_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL DEFAULT '',
`passwd` varchar(32) NOT NULL DEFAULT '',
`email` varchar(32) DEFAULT NULL,
`city` varchar(24) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of servlet_user
-- ----------------------------
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('maxsu', '123456', 'maxsu@yiibai.com', '广州');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('minsu', '233123', 'minsu@gmail.com', '海口');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('avguser', 'fdsa123', 'avguser@qq.com', '广州');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('sumuser', 'fdsj124', 'sumuser@qq.com', '北京');
CREATE TABLE `servlet_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL DEFAULT '',
`passwd` varchar(32) NOT NULL DEFAULT '',
`email` varchar(32) DEFAULT NULL,
`city` varchar(24) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of servlet_user
-- ----------------------------
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('maxsu', '123456', 'maxsu@yiibai.com', '广州');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('minsu', '233123', 'minsu@gmail.com', '海口');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('avguser', 'fdsa123', 'avguser@qq.com', '广州');
INSERT INTO `servlet_user`(name,passwd,email,city) VALUES ('sumuser', 'fdsj124', 'sumuser@qq.com', '北京');
准备好这些之后启动tomcat服务,输入网址:http://localhost:8080/LoginWithCookies/login.html就可以看到下面这个界面:
输入用户名和密码之后,就可以登陆了。
关于注册及其他下次再写!