ajax判断用户名不存在,第一次失去焦点时,span标签提示用户名不存在,但是第二次失去焦点时,span标签无法刷新,并且servlet报错
html代码
```html
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎登录</title>
<link type="text/css" rel="stylesheet" href="style/new_file.css" />
</head>
<body background="photo/dll.jpg" style=" background-repeat:no-repeat background-size:100% 100% background-attachment: fixed" >
<div class="dl">
<h1 class="t123">欢迎登录</h1>
<form action="http://localhost:8080/2023-04-04_02_JDBC/UsernameServlet" method="post">
账户:<input type="text" id="username" name="username" class="in" /><br />
<span id="nameshow"></span><br />
密码:<input type="password" id="password" name="password" class="in" /><br />
<span id="pwdshow"></span><br />
<input type="button" onclick='location.href=("02-zhuce.jsp")' value="注册" class="btn change4"/>
<input type="submit" value="登录" id="denglu" class="btn change4"/>
</form>
</div>
<script src="js/jq.js"></script>
<script>
$(function(){
$('#username').blur(function(){
$.ajax({
url:'http://localhost:8080/2023-04-04_02_JDBC/UsernameServlet',
data:{
username:$('#username').val(),
},
type:'post',
cache:false,
success(result) {
if(result==0){
$('#nameshow').html('用户名不存在').css('color','red');
} else{
$('#nameshow').html('用户名正确').css('color','red');
}
}
});
});
});
</script>
</body>
</html>
servlet代码
package com.qf.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
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 com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.service.impl.UserServiceImpl;
/**
* Servlet implementation class CheckNameServlet
*/
@WebServlet("/UsernameServlet")
public class UsernameServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UsernameServlet() {
super();
}
private UserServiceImpl userServiceImpl = new UserServiceImpl();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String us = request.getParameter("username");
String pa = request.getParameter("password");
int a =1;
User u = userServiceImpl.selectByUsername(us);
if(u == null ) {
response.getWriter().print(0);
}else {
if(a==u.getUser()&&pa.equals(u.getPassword())) {
HttpSession session = request.getSession();
session.setAttribute("user", u);
response.sendRedirect("04-index.jsp");
}
// 判断密码是否正确
if (pa.equals(u.getPassword())) {
HttpSession session = request.getSession();
session.setAttribute("user", u);
response.sendRedirect("03-index.jsp");
} else {
response.getWriter().print("<script>alert('密码错误,请重新登陆');window.location.href='http://localhost:8080/2023-04-04_02_JDBC/01-denglu.jsp'</script>");
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
报错信息
```java
五月 10, 2023 9:44:58 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: 在路径为[/2023-04-04_02_JDBC]的上下文中,servlet[com.qf.servlet.UsernameServlet]的Servlet.service()引发异常
java.lang.NullPointerException
at com.qf.servlet.UsernameServlet.doGet(UsernameServlet.java:49)
at com.qf.servlet.UsernameServlet.doPost(UsernameServlet.java:63)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:514)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:212)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:156)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:181)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:156)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:682)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:617)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:932)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1695)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
doGet方法,第49行:打印下值是否拿到了。。。
if (pa.equals(u.getPassword())) {