javaWeb连接mysql 简单登录页面

javaWeb连接mysql 简单登录页面

今天上午学了javaWeb中的servlet部分,结合前面所学的jdbc的知识可以写一个简单的登录界面。
用dao模式结合servlet做一个登陆测试,并给出相应的页面
采用了Dao模式,这个框架有3个包:
Util:接口,jdbc连接
Dao:继承Util中接口的类
servlet:写的登录界面,调用了Dao中的类,实现连接mysql的功能
(Test是我为了测试数据库建的,请忽略)
在这里插入图片描述

下面是代码部分:

Util包,有接口和jdbc连接:

接口:

package Util;

public interface UserInte {
	public String Select(String username);

}

jdbc连接:

package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnection{
	
	String url = "jdbc:mysql://localhost:3306/user";
	String user = "root";
	String password = "418521";
	Connection conn = null;
	Statement stmt = null;
	
	public Connection getConn(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url,user,password);
			stmt = conn.createStatement();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return conn;		
	}	
}

Dao包,写了具有查询功能的一个类,继承用了Util包中的接口,调用了DBConnection类,用来连接数据库。

package Dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import Util.DBConnection;
import Util.UserInte;

public class UserImpl implements UserInte{

	Connection conn = null;
	public UserImpl(){
		DBConnection db = new DBConnection();
		conn = db.getConn();
	}

	public String Select(String username) {

		String password = null;
		try (Statement stmt = conn.createStatement();){
			String sql = null;
			sql="select password from login where username = '"+username+"'";
			ResultSet re = stmt.executeQuery(sql);
			
			if(re.next()){
				password = re.getString(1);
			}			

			stmt.close();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return password;
	}

}

serclet包,重写了doPost等方法:

package servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Dao.UserImpl;
import Util.UserInte;

public class Servlet1 extends HttpServlet {


	public void destroy() {
		super.destroy(); 
		System.out.println("servlet1 destroy");
	}


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request,response);

	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		String password2 = null;
		UserInte u1 = new UserImpl();
		password2 = u1.Select(username);
		if(password2 == null){
			response.sendRedirect("failure.jsp");
		}else if(password.equals(password2)){
			request.getRequestDispatcher("success.jsp").forward(request, response);
		}else{
			response.sendRedirect("failure.jsp");
		}


	}

	public void init() throws ServletException {
		// Put your code here
		System.out.println("servlet1 init");
	}

}

下面是写的jsp文件
登录界面:

<html>
  <head> 
    <title>My JSP 'MyJsp.jsp' starting page</title>
  </head>  
  <body>
  <center>
    <hr>登陆页面
    <form action="sv1" method="Post" name="form1">
    	用户名:<input type="text" name="username"><br>
    	密码:<input type="password" name="password"><br>
    	<input type="submit" name="submit" value="登陆">
    </form>
    </center>
  </body>
</html>

登录成功

<html>

  <body>
  <center>
    <hr>欢迎页面
    welcome <%=request.getParameter("username") %>
    </center>
  </body>
</html>

登录失败

<html>
  <body>
  <center>
    <hr>错误页面
    <font size="12" color="red">登陆失败</font>
    <% response.setHeader("refresh", "5;url=login.jsp"); %>
    </center>
  </body>
</html

这样大致就写好了,启动tomcat服务器,浏览器中输入host:8080/Zmenge/login.jsp启动登录界面。
在这里插入图片描述
输入数据库中存在的用户名和密码后,却出现了异常:
在这里插入图片描述
这应该是jdbc的问题,首先看看sql语句有没有错误:

"select password from login where username = '"+username+"'";

没有问题,值得注意的是字符串拼接的是字符型,所以“‘’”单引号不能丢。
研究了一会,发现是mysql驱动的问题,这里需要将mysql驱动拷贝到tomcat的lib文件夹下:
在这里插入图片描述
这样问题就解决了!
在这里插入图片描述
在这里插入图片描述
两张测试的截图,分别测试了登录成功和失败的页面。


本人为一名计算机专业大二的学生,如果有错误的话希望能够指出,共同学习和进步!

  • 18
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值