将servlet中提交的表单值传递给java类,然后插入数据库

将servlet中提交的表单值传递给java类,然后插入数据库,java,jsp,servlets,Java,Jsp,Servlets,表单值被提交到servlet,我需要将这些值检索到一个类“RegisterDetails”中,然后插入数据库“userdetails”。。我使用session存储值,然后在类文件中检索它。这是一次失败。我应该如何将这些值带入类文件???稍后,我还需要将这些值传递到jsp中。请指示我。如果有任何错误,请帮助我 Servlet:p1.java import java.io.IOException; import java.sql.Connection; import javax.servlet.R

表单值被提交到servlet,我需要将这些值检索到一个类“RegisterDetails”中,然后插入数据库“userdetails”。。我使用session存储值,然后在类文件中检索它。这是一次失败。我应该如何将这些值带入类文件???稍后,我还需要将这些值传递到jsp中。请指示我。如果有任何错误,请帮助我

Servlet:p1.java

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//import reg.common.Co;
//import agge.db.geg;
//import agge.model.m_login;
import reg.db.RegisterDetails;


/**
 * Servlet implementation class p1
 */
@WebServlet("/p1")
public class p1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public p1() {
        super();
        // TODO Auto-generated constructor stub
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();
        String a=request.getParameter("username1");
        String b=request.getParameter("password1");
        String c = request.getParameter("confirmpassword1");
        String d = request.getParameter("email1");
        String ee = request.getParameter("mob1");
        String f =request.getParameter("address1");

        System.out.println("Hai User "+a);
        System.out.println("Password is "+b);


        session.setAttribute("de", a); 
        session.setAttribute("de1", b);
        session.setAttribute("de2", c);
        session.setAttribute("de3", d);
        session.setAttribute("de4", ee);
        session.setAttribute("de5",f);
        RegisterDetails details = new  RegisterDetails();

        session.setAttribute("details", details);
        getServletContext().getRequestDispatcher("/jsp/Welcome.jsp").forward(request, response);
    }
}
package reg.db;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;

import java.sql.*;
public class RegisterDetails {
    String user13;
    String pass13;
    String confpassword13;
    String email13;
    String mobile13;
    String address13;
    private ServletRequest session;


    String n=(String)session.getAttribute("de");
    String n1=(String)session.getAttribute("de1");
    String n2=(String)session.getAttribute("de2");
    String n3=(String)session.getAttribute("de3");
    String n4=(String)session.getAttribute("de4");
    String n5=(String)session.getAttribute("de5");



    public boolean insertDB() throws Exception {        

        Connection conn=null;
        PreparedStatement st = null;

        st=conn.prepareStatement("insert into user_details(username, password, confpassword, email,mobile, address) values ('" + n + "','" + n1 + "','" + n2 + "','" + n3 + "','" + n4 + "',' "+n5+ "')");

        ResultSet rs =st.executeQuery();
        boolean l_status=false;
        while(rs.next()){
            user13          =   rs.getString("username");
            pass13          =   rs.getString("password");
            confpassword13  =   rs.getString("confpassword");
            email13         =   rs.getString("email");
            mobile13            =   rs.getString("mobile");
            address13           =   rs.getString("address");
        }
        return l_status=true;

    }
}
package reg.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Dbconnect {

    Connection conn=null;

    public  Connection getConnection() { 
         try {
             String driverName = "org.postgresql.Driver";
             Class.forName(driverName).newInstance(); 

             conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres", "postgres");
         } 
         catch (ClassNotFoundException e) {e.printStackTrace();
             System.out.println("db Error1");
         } 
         catch (SQLException e) {
             e.printStackTrace();
             System.out.println("DB Error 2");
         }
         catch (Exception e) {

        }
         return conn;
    }

    public void closeConnection(Connection connection) {
        try{
            connection.close();
        }
        catch (Exception e) {

        }

    }
}
类:RegisterDetails.java

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//import reg.common.Co;
//import agge.db.geg;
//import agge.model.m_login;
import reg.db.RegisterDetails;


/**
 * Servlet implementation class p1
 */
@WebServlet("/p1")
public class p1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public p1() {
        super();
        // TODO Auto-generated constructor stub
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();
        String a=request.getParameter("username1");
        String b=request.getParameter("password1");
        String c = request.getParameter("confirmpassword1");
        String d = request.getParameter("email1");
        String ee = request.getParameter("mob1");
        String f =request.getParameter("address1");

        System.out.println("Hai User "+a);
        System.out.println("Password is "+b);


        session.setAttribute("de", a); 
        session.setAttribute("de1", b);
        session.setAttribute("de2", c);
        session.setAttribute("de3", d);
        session.setAttribute("de4", ee);
        session.setAttribute("de5",f);
        RegisterDetails details = new  RegisterDetails();

        session.setAttribute("details", details);
        getServletContext().getRequestDispatcher("/jsp/Welcome.jsp").forward(request, response);
    }
}
package reg.db;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;

import java.sql.*;
public class RegisterDetails {
    String user13;
    String pass13;
    String confpassword13;
    String email13;
    String mobile13;
    String address13;
    private ServletRequest session;


    String n=(String)session.getAttribute("de");
    String n1=(String)session.getAttribute("de1");
    String n2=(String)session.getAttribute("de2");
    String n3=(String)session.getAttribute("de3");
    String n4=(String)session.getAttribute("de4");
    String n5=(String)session.getAttribute("de5");



    public boolean insertDB() throws Exception {        

        Connection conn=null;
        PreparedStatement st = null;

        st=conn.prepareStatement("insert into user_details(username, password, confpassword, email,mobile, address) values ('" + n + "','" + n1 + "','" + n2 + "','" + n3 + "','" + n4 + "',' "+n5+ "')");

        ResultSet rs =st.executeQuery();
        boolean l_status=false;
        while(rs.next()){
            user13          =   rs.getString("username");
            pass13          =   rs.getString("password");
            confpassword13  =   rs.getString("confpassword");
            email13         =   rs.getString("email");
            mobile13            =   rs.getString("mobile");
            address13           =   rs.getString("address");
        }
        return l_status=true;

    }
}
package reg.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Dbconnect {

    Connection conn=null;

    public  Connection getConnection() { 
         try {
             String driverName = "org.postgresql.Driver";
             Class.forName(driverName).newInstance(); 

             conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres", "postgres");
         } 
         catch (ClassNotFoundException e) {e.printStackTrace();
             System.out.println("db Error1");
         } 
         catch (SQLException e) {
             e.printStackTrace();
             System.out.println("DB Error 2");
         }
         catch (Exception e) {

        }
         return conn;
    }

    public void closeConnection(Connection connection) {
        try{
            connection.close();
        }
        catch (Exception e) {

        }

    }
}
数据库连接:Dbconnect.java

import java.io.IOException;
import java.sql.Connection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//import reg.common.Co;
//import agge.db.geg;
//import agge.model.m_login;
import reg.db.RegisterDetails;


/**
 * Servlet implementation class p1
 */
@WebServlet("/p1")
public class p1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public p1() {
        super();
        // TODO Auto-generated constructor stub
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        HttpSession session = request.getSession();
        String a=request.getParameter("username1");
        String b=request.getParameter("password1");
        String c = request.getParameter("confirmpassword1");
        String d = request.getParameter("email1");
        String ee = request.getParameter("mob1");
        String f =request.getParameter("address1");

        System.out.println("Hai User "+a);
        System.out.println("Password is "+b);


        session.setAttribute("de", a); 
        session.setAttribute("de1", b);
        session.setAttribute("de2", c);
        session.setAttribute("de3", d);
        session.setAttribute("de4", ee);
        session.setAttribute("de5",f);
        RegisterDetails details = new  RegisterDetails();

        session.setAttribute("details", details);
        getServletContext().getRequestDispatcher("/jsp/Welcome.jsp").forward(request, response);
    }
}
package reg.db;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpSession;

import java.sql.*;
public class RegisterDetails {
    String user13;
    String pass13;
    String confpassword13;
    String email13;
    String mobile13;
    String address13;
    private ServletRequest session;


    String n=(String)session.getAttribute("de");
    String n1=(String)session.getAttribute("de1");
    String n2=(String)session.getAttribute("de2");
    String n3=(String)session.getAttribute("de3");
    String n4=(String)session.getAttribute("de4");
    String n5=(String)session.getAttribute("de5");



    public boolean insertDB() throws Exception {        

        Connection conn=null;
        PreparedStatement st = null;

        st=conn.prepareStatement("insert into user_details(username, password, confpassword, email,mobile, address) values ('" + n + "','" + n1 + "','" + n2 + "','" + n3 + "','" + n4 + "',' "+n5+ "')");

        ResultSet rs =st.executeQuery();
        boolean l_status=false;
        while(rs.next()){
            user13          =   rs.getString("username");
            pass13          =   rs.getString("password");
            confpassword13  =   rs.getString("confpassword");
            email13         =   rs.getString("email");
            mobile13            =   rs.getString("mobile");
            address13           =   rs.getString("address");
        }
        return l_status=true;

    }
}
package reg.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Dbconnect {

    Connection conn=null;

    public  Connection getConnection() { 
         try {
             String driverName = "org.postgresql.Driver";
             Class.forName(driverName).newInstance(); 

             conn=DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","postgres", "postgres");
         } 
         catch (ClassNotFoundException e) {e.printStackTrace();
             System.out.println("db Error1");
         } 
         catch (SQLException e) {
             e.printStackTrace();
             System.out.println("DB Error 2");
         }
         catch (Exception e) {

        }
         return conn;
    }

    public void closeConnection(Connection connection) {
        try{
            connection.close();
        }
        catch (Exception e) {

        }

    }
}
jsp:Welcome.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ page import="reg.db.RegisterDetails" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

  Hai
<% RegisterDetails details = (RegisterDetails)session.getAttribute("details");%>

</body>
</html>

在此处插入标题
海

在您的
p1
servlet中,您正在使用
RegisterDetails
的新实例设置会话属性“details”,而不设置该对象的任何属性(即用户名等)

相反,您将这些属性设置为具有神秘名称的会话属性(“de”、“de1”等等)

这可能会导致您的问题(除了架构或安全性方面的所有考虑因素),因为您检索的
RegisterDetails
实际上是一个空对象

试试这几个步骤。。。 1.您应该设置RegisterDetails对象的数据成员的值,而不是将参数值存储在各种字符串对象中

  • 创建另一个专门处理数据库工作的类(使用该类中的连接对象)

  • 为上述类中的CRUD操作创建方法并传递RegisterDetails对象

  • 从servlet中调用新创建的类的insert方法,并在其中传递RegisterDetails对象

  • 插入后,将RegisterDetails对象添加到servlet请求中,并将请求发送到jsp


  • 您正在将servlet中接收的参数设置为其他会话属性,并设置一个空的
    RegisterDetails
    对象。而是在servlet中设置在
    RegisterDetails
    对象中接收的值。大概是这样的:-

    RegisterDetails details = new  RegisterDetails();
    details.user13=request.getParameter("username1");
    details.pass13=request.getParameter("password1");
    details.confpassword13= request.getParameter("confirmpassword1");
    details.email13= request.getParameter("email1");
    details.mobile13 = request.getParameter("mob1");
    details.address13 =request.getParameter("address1");
    
    这应该可以解决您的问题,但除此之外,我建议重新设计您的解决方案并遵循编码最佳实践。Alteast为您生成getter/setter方法
    RegisterDetails
    类,然后使用该方法设置对象数据memeber值,而不必直接访问它们


    编辑:-似乎
    RegisterDetails
    的数据成员的访问说明符是
    default
    ,将其更改为
    public
    以访问和分配值,因为servlet和RegisterDetails类位于不同的包中。尽管建议的方法是将它们设置为
    private
    ,并生成公共getter/setter。

    yeah@Mena发现了问题……应进行哪些更改。