package jdbc;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import static java.lang.System.out;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Registration extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
String name = request.getParameter("name");
String email = request.getParameter("email");
String pass = request.getParameter("password");
String sql="insert into regis(name,email,password) values(?,?,?)";
Class.forName("com.java.mysql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/login","root","3839");
PreparedStatement ps= con.prepareStatement(sql);
ps.setString(1,name);
ps.setString(2, email);
ps.setString(3, pass);
ps.executeUpdate();
PrintWriter out= response.getWriter();
out.println("Registration Done !!");
} catch (IOException | ClassNotFoundException | SQLException ex) {
out.println(ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
我是这方面的初学者,所以我首先做了什么,我创建了2个用于登录和注册的jsp和一个servlet(如上面的代码),我在web.xml中进行了映射,并且还连接到了Mysql服务器(连接器和 jdbc 驱动程序)。但当我在注册页面中输入数据并提交时,仅显示(//localhost:8084/WebApplication5/Registration),什么也没有,只有一个空白页面, 也没有显示任何异常。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<display-name>Registration </display-name>
<servlet>
<servlet-name>Reg</servlet-name>
<servlet-class>jdbc.Registration</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Reg</servlet-name>
<url-pattern>/Registration</url-pattern>
</servlet-mapping>
</web-app>
最佳答案
您将响应的内容类型设置为“text/html;charset=UTF-8”,但您正在编写的内容是 text/plain。
此外,我强烈建议您使用在 servlet 容器的配置中定义的数据源。
更新:
试试这个:
response.setContentType("text/plain;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
try {
String name = request.getParameter("name");
String email = request.getParameter("email");
String pass = request.getParameter("password");
String sql = "insert into regis(name,email,password) values(?,?,?)";
Class.forName("com.java.mysql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/login", "root", "3839");
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, email);
ps.setString(3, pass);
ps.executeUpdate();
out.println("Registration Done !!");
} catch (IOException | ClassNotFoundException | SQLException ex) {
out.println(ex);
}
}
更新2:
我的错误:作者不需要关闭:
response.setContentType("text/plain;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String name = request.getParameter("name");
String email = request.getParameter("email");
String pass = request.getParameter("password");
String sql = "insert into regis(name,email,password) values(?,?,?)";
Class.forName("com.java.mysql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/login", "root", "3839");
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, email);
ps.setString(3, pass);
ps.executeUpdate();
out.println("Registration Done !!");
} catch (IOException | ClassNotFoundException | SQLException ex) {
out.println(ex);
}
关于java servlet - 注册问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45749644/