JavaWeb+JDBC+Servlet+SqlServer实现登录功能
Posted 让自己不再小小的
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb+JDBC+Servlet+SqlServer实现登录功能相关的知识,希望对你有一定的参考价值。
首先创建javaweb项目,可以参照以下:
https://blog.csdn.net/u012532559/article/details/51013400
附上项目结构:
1.重写登录页面index.jsp的内容
<%-- Created by IntelliJ IDEA. User: LXJ\'PC Date: 2018/5/12 Time: 15:49 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <div id="container" style="width: 300px;margin: 0px auto"> <div id="box"> <form action="LoginServlet" methods="post"> <div class="main"> <div> <label>用户名:</label> <input name="userName" value=""> </div> <div> <label>密码:</label> <input type="passWord" name="passWord" value=""> </div> <div> <input type="submit" value="登录"> </div> </div> </form> </div> </div> </body> </html>
2.新建类DBUtil
package org.user.util; import java.sql.*; public class DBUtil { //mysql驱动包名 private static final String DRIVER_NAME = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //数据库连接地址 private static final String URL = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=JavaWeb"; //用户名 private static final String USER_NAME = "."; //密码 private static final String PASSWORD = ""; public static Connection getConnection(){ try { //加载mysql的驱动类 Class.forName(DRIVER_NAME); //获取数据库连接 return DriverManager.getConnection(URL); } catch (Exception e) { e.printStackTrace(); return null; } } public static void closeConn(Connection conn,Statement stm , ResultSet rs ){ if(stm!=null){ try { stm.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } if(rs!=null){ try{ rs.close(); }catch(SQLException e){ e.printStackTrace(); } } } public static void main(String[] args){ System.out.println(getConnection()); } }
3.新建实体类User
package org.user.entity; public class User { private String userName; private String passWord; 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; } }
4.新建类UserDao
package org.user.dao; import java.sql.*; import org.user.entity.User; import org.user.util.DBUtil; public class UserDao { //根据用户名查找用户 public User findUserByName(String userName){ //编写sql语句 String sql="select * from Login where userName=?"; //获得连接 Connection conn= DBUtil.getConnection(); //有返回的结果 ResultSet rs= null; //实例化一个User对象 User user = new User(); try { //用来发送sql语句的 PreparedStatement ps = conn.prepareStatement(sql); //设置要传入的参数,这里是userN ps.setString(1, userName); //执行sql语句 rs=ps.executeQuery(); //如果能找到结果 if(rs.next()){ //则把找到的结果一一set进User对象中 user.setUserName(rs.getString(1)); user.setPassWord(rs.getString(2)); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally {//关闭连接 DBUtil.closeConn(conn, null, rs); } //最后要把这个user返回出去 return user; } public static void main(String[] args) { UserDao dao = new UserDao(); User i = dao.findUserByName("lxj"); System.out.println(i.getPassWord()); } }
5.新建服务类LoginService
package org.user.service; import org.user.dao.UserDao; import org.user.entity.User; public class LoginService { public boolean checkUser(String userName, String passWord) { UserDao dao = new UserDao(); User user = dao.findUserByName(userName); System.out.println(user); return user != null && passWord.equals(user.getPassWord()) ? true : false; } }
6.新建servlet类LoginServlet
package org.user.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; import org.user.dao.UserDao; import org.user.entity.User; import org.user.service.LoginService; @WebServlet(name = "LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; // 在本电脑的D:\\java-jdk8\\bin路径下放入了sqljdbc_auth.dll文件;解决了登录不成功问题 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //获取从页面中提交过来的数据 String userName = request.getParameter("userName"); String userPass = request.getParameter("passWord"); LoginService service = new LoginService(); //调用service方法 把用户名 密码传入给service boolean flag = service.checkUser(userName, userPass); String msg = flag?"success":"error"; request.setAttribute("msg", msg); if(msg=="success"){ request.getRequestDispatcher("login_success.jsp").forward(request, response); } else{ request.getRequestDispatcher("login_failure.jsp").forward(request, response); } } }
7.最后在index.jsp同级目录下新建login_success.jsp和login_failure.jsp文件用于登录成功或失败跳转页面提示用的。
提示:如果出现警告: Failed to load the sqljdbc_auth.dll cause :- no sqljdbc_auth in java.library.path,可以把sqljdbc_auth.dll文件在放入你点jdk目录下的bin文件夹里,例如我自己的电脑的D:\\java-jdk8\\bin路径下放入了sqljdbc_auth.dll文件
以上是关于JavaWeb+JDBC+Servlet+SqlServer实现登录功能的主要内容,如果未能解决你的问题,请参考以下文章
javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD