Java 在ajax代码中无法从servlet将json返回到jsp
我不熟悉Java 在ajax代码中无法从servlet将json返回到jsp,java,jquery,json,ajax,jsp,Java,Jquery,Json,Ajax,Jsp,我不熟悉Ajax,Jquery,JSON之类的东西。我已经在jspservlet技术中创建了一个登录页面。在登录页面上,当用户按下提交按钮时,数据在JSON中收集,并通过AJAX传输到控制器。现在,在控制器中,如果在某些条件下,发现登录名是正确的,那么它应该使用RequestDispatcher将其发送到成功页面。但是,如果条件不满足,那么它应该在JSON对象中写入消息,并将其作为内容类型JSON返回。现在的问题是,我能够在控制器上接收JSON数据,但无法在成功时重定向,也无法在用户输入错误数据
Ajax
,Jquery
,JSON
之类的东西。我已经在jsp
servlet
技术中创建了一个登录页面。在登录页面上,当用户按下提交按钮时,数据在JSON
中收集,并通过AJAX
传输到控制器。现在,在控制器中,如果在某些条件下,发现登录名是正确的,那么它应该使用RequestDispatcher
将其发送到成功页面。但是,如果条件不满足,那么它应该在JSON对象中写入消息,并将其作为内容类型JSON
返回。现在的问题是,我能够在控制器上接收JSON
数据,但无法在成功时重定向,也无法在用户输入错误数据时向用户显示警报框。以下是文件:
login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function validateAndSet()
{
var jsonRequest = {};
var login_name = $.trim($('#loginName').val());
var password = $.trim($('#password').val());
if(login_name=='' || login_name.length==0 ){
alert("Please enter login name.");
$('#loginName').focus();
return false;
}
if(password=='' || password.length==0 ){
alert("Please enter password.");
$('#password').focus();
return false;
}
jsonRequest["login_name"] = login_name;
jsonRequest["password"] = password;
return jsonRequest;
}
</script>
</head>
<body>
<jsp:include page="commonResources/Header.jsp">
<jsp:param value="none" name="headerMenu"/>
</jsp:include>
<script>
$(document).ready(function(){
$("#but").click(function(){
var formData=validateAndSet();
var strUrl="rwcntrlr.do?action=loginForm";
$.post(strUrl, {jsonData: JSON.stringify(formData)},function(response){
response = jQuery.parseJSON( response);
if(response.status=='NOT OK')
{
alert("not ok");
}
else{
alert('OK');
}
});
});
});
</script>
<br><br>
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-4">
<div class="container-fluid">
<div class="panel panel-default" id="p1">
<div class="panel-heading"><h3>Login</h3></div>
<div class="panel-body">
<center>
<table>
<tr>
<td height="50">LoginName:</td><td height="50"><input type="text" id="loginName" name="loginName"/></td>
</tr>
<tr>
<td height="20">Password:</td><td height="20"><input type="password" id="password" name="password"/></td>
</tr>
<tr><td height="50" colspan="2" align="right"><input type="submit" id="but" name="subBut" value="Go>" /></td></tr>
</table>
</center>
</div>
</div>
</div>
</div>
<div class="col-sm-4"></div>
</div>
</body>
</html>
当我按下login.jsp上的提交按钮时,什么也没发生。没有显示控制台错误。如何解决此问题。是否使用Spring?控制器映射注释丢失。从html/jsp重定向到某个url,但在控制器中,同一url没有映射。不,我没有使用spring,无论如何,控制器映射是正确的,因为它正在控制器上接收数据
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String formName=request.getParameter("action");
if(formName.equalsIgnoreCase("loginForm")){
String strJSONData = request.getParameter("jsonData");
System.out.println(strJSONData);// data received correctly...
JSONObject jsonResponse = new JSONObject();
try{
JSONObject requestedJSONObject = new JSONObject(strJSONData);
String login_name = requestedJSONObject.getString("login_name");
String password = requestedJSONObject.getString("password");
if(login_name.equalsIgnoreCase("u2")){
RequestDispatcher rd=request.getRequestDispatcher("employeeSection/employeeDailySheet.jsp");
response.setContentType("text/html");
rd.forward(request, response);
}
else{
jsonResponse.put("status", "NOT OK");
response.setContentType("application/json");
response.getWriter().write(jsonResponse.toString());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}