先一句话总结问题:
Java中tomcat运行显示内部服务器错误,无法显示需要的打印信息:register success
最近学习用java连接Mysql和前端,实现用网页显示出登陆的效果。本人是第一次接触java,Teacher在用Java连接时,使用的是DriverManager,我图省事(没听课)在csdn上搜了一个datasource连接。
但完成代码后服务器无法成功显示出要打印的信息:register success。
我总感觉是datasource接口对象调用的问题(主要别的也看不太懂【悲】),求帮助。
运行结果Tomcat日志是显示
连接到服务器,但是在网页登陆链接后从$END$后就报错了,即输入
“http://localhost:8080/Day02_war_exploded/register”后
我想是不是从画红圈那里开始了一连串错误,三行代码:
MysqlDataSource First=new MysqlDataSource();
one1 = Test.getConnection();
boolean isExist = UserDao.UsernameORexist(users);
”
完整的代码如下
这个是用Datasource创建的mysql接口
package com.lalalala.mysql.until;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class Test {
public static Connection getConnection() throws SQLException{
MysqlDataSource First=new MysqlDataSource();
First.setURL("jdbc:mysql://localhost:3306/the_ms_of_hgjw?characterEncoding=UTF-8&useSSl=false");
First.setUser("root");
First.setPassword("9630");
//创建连接对象one
Connection one = First.getConnection();
return one;
}
}
这个是执行sql语句的类,在这调用接口。
package com.lalalala.mysql.dao;
import com.lalalala.mysql.until.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import static com.lalalala.mysql.until.Test.getConnection;
public class UserDao {
public static Boolean UsernameORexist (String users){
boolean Rexist = false;
//sql语句判断用户名是否存在
String sql = "selet * from user where users=?";
Connection one1 = null;
try {
one1 = Test.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
//创建执行语句的对象
try {
PreparedStatement Or = one1.prepareStatement(sql);
Or.setString(1, "users");
ResultSet once1 = Or.executeQuery();
//执行结果集,判断账号是否存在
if (once1.next()) {
Rexist = true;
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return Rexist;
}
public static int addUser (String users,int pword){
int once2 = 0;
//创建插入用户sql语句
String sql = "insert into user(users,pword) values(?,?)";
Connection one2 = null;
try {
one2 = getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
//创建执行语句的对象
try {
PreparedStatement Insert = one2.prepareStatement(sql);
Insert.setString(1, users);
Insert.setInt(2, pword);
once2 = Insert.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}
return once2;
}
}
第三个连接前端的代码
package com.lalalala;
//前端,后端通过http 进行连接,数据传输
import com.lalalala.mysql.dao.UserDao;
import javax.servlet.Servlet;
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 java.io.IOException;
//第一步,设置链接路径
// urlPatterns参数负责设置链接名
//name唯一标识符,一般与类名相同。
@WebServlet(name = "RegisterServerLet",urlPatterns = "/register")
//第二步,让本类成为HttpServlet的子类
//HttpServlet此类用来接收 前端发送的请求
//extends 继承关键字
public class RegisterServerLet extends HttpServlet {
//第三步
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{
resp.setHeader("Access-Control-Allow-Origin", "*");
resp.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
resp.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String users = req.getParameter("username");
int pword = req.getIntHeader("password");
boolean isExist = UserDao.UsernameORexist(users);
String result;
if (isExist) {
result = "注册失败";
} else {
int row = UserDao.addUser(users, pword);
result = row > 0 ? "注册失败" : "注册成功";
}
resp.getWriter().write(result);
System.out.println("register success");
}
}
类不存在错误,要么是 没有找到 对用的jar包,要么是 JDK版本 和 对应的jar包 不匹配
另外 如果存在 jar包,你部署的时候,有一起打包在 你的 war包里嘛? 这些 都 检查一下