今天在写Servlet连接MySQL数据库的时候遇到的几个问题

Servlet端我用的HttpServlet,具体的代码如下:

package com.xuyan.javaweb;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

public class loginServletJdbc extends HttpServlet {
	private final String DRIVER = "com.mysql.cj.jdbc.Driver";
	private final String URL = "jdbc:mysql://localhost:3306/user_info?serverTimezone=UTC";
	private final String SQLUSERNAME = "root";
	private final String SQLPASSWORD = "862578733";
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//		super.doPost(req, resp);
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		PrintWriter pw = resp.getWriter();
		try {
			Class.forName(DRIVER);
			con = DriverManager.getConnection(URL, SQLUSERNAME, SQLPASSWORD);
			String sql = "SELECT COUNT(*) FROM USER WHERE USERNAME = ? AND PASSWORD = ?";
			ps = con.prepareStatement(sql);
			
			String username = req.getParameter("username");
			String password = req.getParameter("password");
			
			
			ps.setString(1, username);
			ps.setString(2, password);
			rs = ps.executeQuery();
			String[] interest =  req.getParameterValues("interesting");

			rs.next();
			int num = rs.getInt(1);
			
			if(num > 0) {
				pw.println("Hello!" + username);
				pw.print("Your interests are : ");
				for (String str : interest) {
					pw.print(str + "   ");
				}
			}else {
				pw.println("Sorry," + username + ",your password is wrong!");
			}
			
		}catch (Exception e) {
			e.printStackTrace();
		}finally {
				try {
					if(con != null) con.close();
					if(ps != null) ps.close();
					if(rs != null) rs.close();
					if(pw != null) pw.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			
		}
	}
}

以下是我遇到的几个问题:

1. 编写到一半的时候,我想做下测试,于是直接在Eclipse里面运行了Servlet,提示“HTTP Status 405 – Method Not Allowed”,具体说我用GET方法访问的文件

原因:查看了百度发现,默认情况下没有参数的访问是默认使用GET方式访问的文件,所以会出现这种错误;

2.编写完之后运行,前端页面提交表单又出现了“HTTP Status 405 – Method Not Allowed”错误

原因:在继承了HttpServlet之后,系统在doPost()方法下自动给出了"super.doPost(req, resp);";
解决方案:把“super.doPost(req, resp);”注释掉就好了;

3.解决完第二个问题后,问题又来了,前端页面提交表单后转到后端页面,提示ClassNotFoundException,JDBC驱动加载不成功

原因:jar包默认导入到了“Libraries”目录下,要先Servlet程序加载JDBC驱动,需要把jar包导入“WEB-INF”下的“lib”目录下才可以;
解决方案:将jar包导入到“WEB-INF”下的“lib”目录下;(Eclipse 的 Build Path 目录下有一个Source目录,在那里可以添加jar包目录);

到此,问题全部解决!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值