gpt4 book ai didi

java - 如何在登录页面中传递已保存在我的数据库中的用户名和密码参数?

转载 作者:行者123 更新时间:2023-11-30 03:57:05 25 4
gpt4 key购买 nike

+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| name | varchar(30) | YES | | NULL | |
| password | varchar(30) | YES | | NULL | |
| mno | varchar(30) | YES | | NULL | |
| eid | varchar(30) | YES | | NULL | |
| city | varchar(30) | YES | | NULL | |
| pin | varchar(30) | YES | | NULL | |
| status | varchar(30) | YES | | NULL | |
| cname | varchar(30) | YES | | NULL | |
| aincome | varchar(30) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

这是我的表描述..我已在该表中注册了一些用户。我想以特定用户身份从该数据库登录。我想在jsp和servlet编码中实现

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class loginservlet extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{

doPost(req,res);

}
public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
res.setContentType("text/html");
PrintWriter pw=res.getWriter();
String s1=req.getParameter("name");
String s2=req.getParameter("password");
try
{

//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//Connection con=DriverManager.getConnection("jdbc:odbc:cinfo");
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/cinfo","root","root");
Statement st=con.createStatement();
//string query="select * from newuser where name='"+name+"',password='"+password"'";
//ResultSet rs=st.executeQuery("select * from newuser where name='"+s1+"'");
//,password='"+password"'");

if(s1.equals("name") || s2.equals("password"))
{

RequestDispatcher rd=req.getRequestDispatcher("index.jsp");
rd.forward(req,res);
}
else
{
//req.getAttirbute("You are not a valid customer");
pw.println("You are not a valid customer");
}
}
catch(Exception e)
{
pw.println(e);
}
}
}

最佳答案

您的 Servlet 可能看起来像这样(Java 7 语法) - 未经测试。

想法是使用 PreparedStatement 查找并输入匹配的用户名密码(顺便说一句。不要将纯文本密码存储在数据库)。

如果找不到该条目 (resp.first() == false) 将用户重定向到登录 (login.jsp) 页面 - 可能会显示一些错误消息。

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

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

public class Loginservlet extends HttpServlet {


public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

String name = req.getParameter("name");
String password = req.getParameter("password");

try (
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/cinfo", "root", "root");
PreparedStatement st = con.prepareStatement("select name from newuser where name = ? and password = ?");

)
{
st.setString(1, name);
st.setString(2, password);

try (
ResultSet result = st.executeQuery();
)
{

if (result.first()) {

RequestDispatcher rd = req.getRequestDispatcher("index.jsp");
rd.forward(req, res);

} else {
// username or password wrong - back to the login page.
RequestDispatcher rd = req.getRequestDispatcher("longin.jsp");
rd.forward(req, res);
}

}
} catch (Exception e) {
throw new ServletException("Internal Server Error", e);
}
}
}

关于java - 如何在登录页面中传递已保存在我的数据库中的用户名和密码参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com