java servlet - 注册问题

标签 java servlets

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/

相关文章:

java - 正在检索cookie

Java Web 应用程序 : Passing form parameters across multiple pages

java - 大数据聚合适合业务层(JAVA)还是数据库层(存储过程)?

java - 如何在大型 JavaFx 2.0 应用程序中组织 Controller /演示器?

java - 从文本字段获取字符串到另一个类空值[Java]

java - Thread Local - 我做错了什么?

java - 使用 Java SDK 的带有服务凭证的 Google Gmail API 请求返回 400

java - 在 Java 中表示上三角矩阵的最佳数据结构是什么?

java - HTTP 状态 500 - servlet fitTrackerServlet 的 Servlet.init() 抛出异常

java - 嵌入 jetty : JSP and Servlets together?