JavaWeb mvc模式用户登陆功能实现

准备工作

  1. eclipse关联tomcat
    window->preference->Server->RuntimeEnvironments
    没添加的话点右侧add添加已添加要修改可以先选中然后edit( 可以配置tomcat位置和installed JREs)
    参考下图:

    2.mysql数据库建表字段及数据如下
    我的数据库名叫ajaxstu表名t_user 下面的LoginDao连接数据库查询会看到

第一步 新建Web项目MyJspProject

Java连接数据库的登录页面_servlet

建项目时,这里的TargetRuntime选择自己的tomcat版本 Dynamic web module version即servlet版本选择2.5如下图

Java连接数据库的登录页面_tomcat_02


点击next(不要finish)再next然后这里的对号√要勾上不然建的项目里没有web.xml要手动添加如下图

Java连接数据库的登录页面_Java连接数据库的登录页面_03

建好之后在MyJspProject项目上右键build path调整jdk版本为工作空间版本(一致不用改,不一致要remove然后重新添加)

add library 选择serverruntime配置tomcat(如果不配置tomcat import javax.servlet.Servlet会报错)

调整好之后libraries如下(mysql-connector-java为之后添加的这步还没有)

Java连接数据库的登录页面_mysql_04

第二步 webContent目录下新建

1:s.jsp (body中加一个表单)

<form action="Login_Servlet2" method="post">
用户名:<input type="text" name="uname"><br/>                   
密码:<input type="password" name="upwd"><br/>                    
<input type="submit" >    
</form>

2:success.jsp :

<body> 
      登陆成功! 欢迎您:
      <%  String name=request.getParameter("uname");
          out.print(name);
       %>  
 </body

第三部:JavaResources目录下的src中新建servlet包:

JavaResources目录下的src中新建servlet包:
1.包中新建User.java持久化类方便保存传输信息内有账号密码两属性
添加构造方法和getset方法(数据存储model)

String name; 
 String pwd;
  1. Login_Servlet2.java Servlet实现类接受拦截的请求 并在其中调用model层的LoginDao的login方法(controller)
public class Login_Servlet2 extends HttpServlet {
//继承HttpServlet类  重写其doget dopost方法用于处理get类型和post类型的请求//doget dopost逻辑相同dopost中调用doget避免重复代码       
private static final long serialVersionUID = 1L; 
 public Login_Servlet2() { 
         System.out.println("servlet创建");
             }  
 protected void doGet(HttpServletRequest request, HttpServletResponse  response) throws ServletException, IOException {     
         String uname = request.getParameter("uname");             String upwd = request.getParameter("upwd"); 
         User user=new User(uname,upwd); 
         int res=-1; 
         res= LoginDao.login(user); 
         if(res==-1) {
          System.out.println("登陆失败");                    	
          response.sendRedirect("s.jsp");
                       }else {
          request.getRequestDispatcher("success.jsp").forward(request,  response);             }   
              }
protected void doPost(HttpServletRequest request, HttpServletResponse  response) throws ServletException, IOException { 
                   doGet(request, response); 
                         }
            }

3.LoginDao.java(连接数据库,用传进来来的user对象的信息进行查询 若查到返回用户id否则放回-1)(逻辑处理model)

public static int login(User lu) {
             int flag=-1;
             try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
             } catch (ClassNotFoundException e) {
                    System.out.println("加载驱动失败!");
                    e.printStackTrace();
             }
             //url格式==>jdbc协议:mysql协议//ip:端口/(你的数据库库名)
             String  url="jdbc:mysql://localhost:3306/ajaxstu?serverTimezone=UTC&characterEncoding=utf-8";
             String dbuser="root";//数据库用户名
             String  password="123456";//数据库密码
             
             Connection conn=null;
             try {
                    conn = DriverManager.getConnection(url, dbuser, password);
             } catch (SQLException e) {
                    System.out.println("建立连接失败");
                    e.printStackTrace();
             }
             String sql6="select * from t_user where username=?and password=?";
             PreparedStatement ps=null;
             try {
                    ps = conn.prepareStatement(sql6);
             } catch (SQLException e) {
                    System.out.println("获取执行语句对象失败");
                    e.printStackTrace();
             }
             try {
                    ps.setString(1, lu.getName());
                    ps.setString(2,lu.getPwd());
             } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
             }
       
             ResultSet rs=null;
             
             try {
                    rs = ps.executeQuery();
                    if(rs.next()) {
                           //System.out.println(rs.getInt(1));
                           flag=rs.getInt(1);
                    }
                    else {
                           System.out.println("未查到");
                    }
             } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
             }
             finally {
             try {
                    if(rs!=null) {
                           rs.close();
                    }
                    ps.close();
                    conn.close();
             } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
             }
             
             }
//           Statement s = conn.createS
             //System.out.println(flag);
             return flag;
             
       }

由于LoginDAO中要操作数据库,所以要导入mysql-connector-java-x.x.x.jar此jar包要放到WEBContent目录下的WEB-INF下的lib目录中,(放到其他地方会报错:
ClassNotFound"com.mysql.cj.jdbc.Driver";)

在WEB-INF目录下的web.xml中配置拦截器 (servlet2.5及以下) 3.0以上也可用注解//@WebServlet("/Login_Servlet2")

Java连接数据库的登录页面_Java连接数据库的登录页面_05

创建Tomcat服务器

Java连接数据库的登录页面_servlet_06

添加项目MyJspProject

Java连接数据库的登录页面_tomcat_07


Java连接数据库的登录页面_servlet_08

运行服务器
浏览器输入 http://localhost:8080/MyJspProject/s.jsp 即可进入

Java连接数据库的登录页面_mysql_09


效果如下

Java连接数据库的登录页面_Java连接数据库的登录页面_10

登陆成功

Java连接数据库的登录页面_mysql_11