Java 注册MVC-JSP、servlet的用户名验证
我有一个html注册表单,我正在使用Javascript检查字段以进行验证。但是,我需要检查数据库中是否存在用户名,以及是否存在,以便在“用户名已被占用”部分打印一条消息。但是,我必须检查用户是否存在,这项检查不起作用 我已尝试检查User类中是否存在用户名。我正在尝试进行实时验证,因此当用户输入用户名时,我有一个if语句来检查数据库中是否存在该用户名。我一直在寻找一个解决方案,我能在网上找到的都是使用php的解决方案。我想知道是否有人能帮助我或给我建议。我已经包括了表单、servlet、使用的ajax、用户类和servlet对不起,所有的代码,但我希望有人可能会看到我的错误 HTML表单Java 注册MVC-JSP、servlet的用户名验证,java,database,forms,jsp,servlets,Java,Database,Forms,Jsp,Servlets,我有一个html注册表单,我正在使用Javascript检查字段以进行验证。但是,我需要检查数据库中是否存在用户名,以及是否存在,以便在“用户名已被占用”部分打印一条消息。但是,我必须检查用户是否存在,这项检查不起作用 我已尝试检查User类中是否存在用户名。我正在尝试进行实时验证,因此当用户输入用户名时,我有一个if语句来检查数据库中是否存在该用户名。我一直在寻找一个解决方案,我能在网上找到的都是使用php的解决方案。我想知道是否有人能帮助我或给我建议。我已经包括了表单、servlet、使用的
Username:
<input id="username" required type="text" name="username" placeholder="Username" autocomplete="off" onkeyup="updateOutput(this.value)" />
<div id="userNameMessage"></div>
</p>
*/ else if (option.equalsIgnoreCase("add")) {
String username = mrequest.getParameter("username");
System.out.println("username" + username);
String password = mrequest.getParameter("password");
System.out.println("password" + password);
String firstName = mrequest.getParameter("firstName");
System.out.println("firstName" + firstName);
String secondName = mrequest.getParameter("secondName");
System.out.println("secondName" + secondName);
String email = mrequest.getParameter("email");
System.out.println("email" + email);
String add = mrequest.getParameter("address");
System.out.println("address" + address);
String mobile = mrequest.getParameter("mobile");
System.out.println("mobile" + mobile);
String image = mrequest.getParameter("image");
String userRole = null;
u = new User(null, username, password, firstName, secondName, email, add, mobile, filename, null);
boolean saved = u.SaveUser();
session.setAttribute("user", u);
address = "/login.html";
Servlet
Username:
<input id="username" required type="text" name="username" placeholder="Username" autocomplete="off" onkeyup="updateOutput(this.value)" />
<div id="userNameMessage"></div>
</p>
*/ else if (option.equalsIgnoreCase("add")) {
String username = mrequest.getParameter("username");
System.out.println("username" + username);
String password = mrequest.getParameter("password");
System.out.println("password" + password);
String firstName = mrequest.getParameter("firstName");
System.out.println("firstName" + firstName);
String secondName = mrequest.getParameter("secondName");
System.out.println("secondName" + secondName);
String email = mrequest.getParameter("email");
System.out.println("email" + email);
String add = mrequest.getParameter("address");
System.out.println("address" + address);
String mobile = mrequest.getParameter("mobile");
System.out.println("mobile" + mobile);
String image = mrequest.getParameter("image");
String userRole = null;
u = new User(null, username, password, firstName, secondName, email, add, mobile, filename, null);
boolean saved = u.SaveUser();
session.setAttribute("user", u);
address = "/login.html";
AJAX代码
*
var xmlHttp;
function updateOutput(inputString) {
if(inputString.length == 0) {
document.getElementById("output").innerHTML = "";
return;
}
try {
if(window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
else if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
if(!xmlHttp || xmlHttp == null) {
return; }
var url="doajaxstuff.aspx?q=" + inputString;
xmlHttp.onreadystatechange=StateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null); }
catch(e) {
document.getElementById("output").innerHTML = "An error occured";
} } function StateChanged() {
if((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
document.getElementById("output").innerHTML = xmlHttp.responseText;
} }
</script>
*
var-xmlHttp;
函数updateOutput(inputString){
如果(inputString.length==0){
document.getElementById(“输出”).innerHTML=“”;
返回;
}
试试{
if(window.XMLHttpRequest)
xmlHttp=新的XMLHttpRequest();
else if(window.ActiveXObject)
xmlHttp=新的ActiveXObject(“Microsoft.xmlHttp”);
如果(!xmlHttp | | xmlHttp==null){
返回;}
var url=“doajaxstuff.aspx?q=“+inputString;
onreadystatechange=StateChanged;
open(“GET”,url,true);
xmlHttp.send(null);}
第(e)款{
document.getElementById(“输出”).innerHTML=“发生错误”;
}}函数StateChanged(){
如果((xmlHttp.readyState==4)&&(xmlHttp.status==200)){
document.getElementById(“输出”).innerHTML=xmlHttp.responseText;
} }
我已经为您创建了示例。这应该会有所帮助
AJAX调用:
<script type="text/javascript">
var xmlHttp;
function updateOutput(inputString) {
if (inputString.length == 0) {
document.getElementById("output").innerHTML = "";
return;
}
try {
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
else if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
if (!xmlHttp || xmlHttp == null) {
return;
}
var url = "validate?userName=" + inputString; // Here, I have mapped servlet as "validate".
xmlHttp.onreadystatechange = StateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
} catch (e) {
document.getElementById("userNameMessage").innerHTML = "An error occured";
}
}
function StateChanged() {
if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
document.getElementById("userNameMessage").innerHTML = xmlHttp.responseText;
}
}
</script>
现在,jQueryAjax调用被认为是良好的实践。您可以查看它。很抱歉,我应该更好地指出这个问题,原始表单验证已停止工作,表单未检查用户名是否已存在。我的编译器中没有错误。会发生什么?JavaScript控制台中有什么?Ajax请求中发送了什么?服务器端发生了什么?我猜ajax没有与servlet通信,很抱歉Dave。。我一直在学习php教程,并试图将逻辑融入java,因为我找不到任何关于用户验证的jsp/java教程。如果你知道另一个解决方案或者我可以看看什么来解决这个问题。你的浏览器的网络/JS控制台应该有助于确定是否有任何JS错误,线路上发生了什么,等等。从Ajax的角度看,没有什么真正的区别。re:PHP/Java除了大多数PHP代码非常可怕之外。我会考虑使用JS库来帮助抽象Ajax的东西。处理起来容易多了。我想我的意思是我不知道你为什么这么告诉我。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String strStatus = "Username is available";
try{
System.out.println("Performing check");
String username = request.getParameter("userName");
String strQuery = "SELECT * FROM users WHERE uname='" + username +"'";
ResultSet rs = DatabaseManager.executeQuery(strQuery);
boolean userExists = rs.next();
if (userExists){
strStatus = "Username already exists"; // Return Exist Msg
}
}catch(Exception e){
strStatus = "Some error occured. Try again"; // Return Err Msg
e.printStackTrace();
}
out.println(strStatus);
}