Java SpringMVC使用ajax检查用户名可用性

Java SpringMVC使用ajax检查用户名可用性,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我在谷歌搜索了用户名可用性。这个问题没有任何好的解决办法。在这里,我试图检查数据库表user中的用户名可用性。我有以下代码 <input type="text" name="username" id="usernamee" tabindex="1"class="form-control" placeholder="Username"><span class="status"> 这是我的控制器代码 @RequestMapping(value = { "/exist/{na

我在谷歌搜索了用户名可用性。这个问题没有任何好的解决办法。在这里,我试图检查数据库表
user
中的用户名可用性。我有以下代码

<input type="text" name="username" id="usernamee" tabindex="1"class="form-control" placeholder="Username"><span class="status">
这是我的控制器代码

@RequestMapping(value = { "/exist/{name}" }, method = RequestMethod.POST)
public void checkUsername(@PathVariable("name") String username, HttpServletResponse response , HttpServletRequest request) throws IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    try {

        String connectionURL = "jdbc:mysql://localhost:81/name"; // students is my database name
        Connection connection = null;
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = (Connection) DriverManager.getConnection(connectionURL, "root", "root");
        PreparedStatement ps = (PreparedStatement) connection.prepareStatement("select username from users where username=?");
        ps.setString(1,username);
        ResultSet rs = ps.executeQuery();

        if (!rs.next()) {
            out.println("<font color=green><b>"+username+"</b> is avaliable");
        }
        else{
        out.println("<font color=red><b>"+username+"</b> is already in use</font>");
        }
        out.println();



    } catch (Exception ex) {

        out.println("Error ->" + ex.getMessage());

    } finally {
        out.close();
    }

}
@RequestMapping(value={/exist/{name}},method=RequestMethod.POST)
public void checkUsername(@PathVariable(“name”)字符串username,HttpServletResponse,HttpServletRequest)引发IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
字符串connectionURL=“jdbc:mysql://localhost:81/name“;//students是我的数据库名
连接=空;
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
connection=(connection)DriverManager.getConnection(connectionURL,“root”,“root”);
PreparedStatement ps=(PreparedStatement)connection.prepareStatement(“从用户名=?”的用户中选择用户名”);
ps.setString(1,用户名);
结果集rs=ps.executeQuery();
如果(!rs.next()){
out.println(“+username+”可用”);
}
否则{
out.println(“+username+”已在使用”);
}
out.println();
}捕获(例外情况除外){
out.println(“错误->”+ex.getMessage());
}最后{
out.close();
}
}
当我运行这些代码时,
status
span标记仅显示
checking availability…..
only。我的控制器还没有被调用。 以上代码是从互联网上复制的。欢迎提出任何建议。 提前感谢您

您发送GET请求

 $.ajax({
            type: "GET"
但是你的控制者期望POST

@RequestMapping(value = { "/exist/{name}" }, method = RequestMethod.POST)

要么将ajax更改为POST,要么将controller更改为GET

我还没有从您上面所说的内容中得到任何问题,但您应该为ajax请求添加@ResponseBody。
我记得我在上面说过,使用了PrintWriter,不需要@ResponseBody,但是使用@ResponseBody会更好

你期望什么?对你来说什么是好的解决方案?你的问题是什么?上面的代码没有按预期工作我想显示用户名是否可用我已经编辑了一点关于错误的问题使用
error
callback检查响应。问题在spring安全配置类中没有工作?有错误吗?将它们添加到问题中?有任何效果(文字等)?控制器被调用了吗?向控制器添加一些日志并检查它们。没有错误回调,因此您不会处理来自ajax的错误响应。出了点问题,但你甚至没有得到错误的结果。我也不能。添加错误回调并检查什么是错误我认为控制器没有被调用我已经检查过了log@StanislavL是的,请求类型不同@“Sangam Jung Gauli”,打开开发人员工具窗口(或检查元素),然后单击网络选项卡。它将显示页面生成的所有请求。在输入中键入一些文本,然后观察网络面板。当您单击http请求时,它将显示额外的信息,如请求类型(GET/POST/…)、参数和服务器响应。它可能会给你一些关于发生了什么的线索。如果没有-请在帖子中添加devtools网络选项卡的屏幕截图。为checkUsername mehotd添加断点,breankpoint有意义吗?
@RequestMapping(value = { "/exist/{name}" }, method = RequestMethod.POST)