2016-05-10 60 views
1

added the directory structureJava servlet代码没有被调用?

我创建了一个简单的java servlet,将两个数字添加到文本框中,并在单击提交按钮时返回结果。它调用javaservlets获取结果。我正在使用eclipse进行编辑。

index.jsp code 
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Ajax Example in JSP And Servlet</title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('#btn').click(function() { 
    var number = $('#number').val(); 
    var number1=$('#number1').val(); 
    var datastr='number='+number+'&number1='+ number1; 
    $.ajax({ 
    type:"post", 
    url:"CalcAjax", 
    data:datastr, 
    success:function(msg) 
    { 
     $("p").append(response.d); 
    } 
    }); 
}); 
}); 
</script> 
</head> 
<body> 
<form id="form" method="post"> 
Enter number1: 
<input id="number" type="text" name="number" /> 
Enter number2: 
<input id="number1" type="text" name="number1" /> 
<input id="btn" type="button" value="Calculate" name="btn"/> 
</form> 
<p></p> 
</body> 
</html> 


CalcAjax.java code 

    package com.ajax.servelets; 

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class CalcAjax 
*/ 

public class CalcAjax extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * Default constructor. 
    */ 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     doPost(request,response); 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     int number=0, number1=0; 
     number=Integer.parseInt(request.getParameter("number")); 
     number1=Integer.parseInt(request.getParameter("number1")); 
     PrintWriter out=response.getWriter(); 
     out.println(number+number1);  
    } 
} 


web.xml code 

    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd"> 
    <servlet> 
    <servlet-name>CalcAjax</servlet-name> 
    <servlet-class>com.ajax.servelets.CalcAjax</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>CalcAjax</servlet-name> 
    <url-pattern>/CalcAjax</url-pattern> 
    </servlet-mapping> 
</web-app> 

回答

2

仔细重新访问您的整个代码后,这是您的代码中的一个小错误。

一切都在你的代码工作完全正常只显示部分错误地显示了导致

所以这样的:

$("p").append(response.d); 

需要通过

$("p").html(""); 
$("p").append(msg); 

代替作为ajax call响应正在进入msg

希望能解决您的疑虑。

+0

已尝试http:// localhost:8080/HowToAjaxJsp/com/ajax/serve让/ CalcAjax“但没有工作 – WakeUpSid

+1

你通知URL完整的包。它只能是http:// :port//。如果您的.WAR名为HowToAjaxJsp.war,那么您将拥有:http:// localhost:8080/HowToAjaxJsp/CalcAjax – fhofmann

+0

这也没有奏效。 – WakeUpSid

0

试试这个,

$.post("CalcAjax", 
{ 
    "number": "number", 
    "number1": "number1" 
}, 
function(data, status){ 
    $("p").append("Data: " + data + " Status: " + status); 
}); 

,而不是$。阿贾克斯()方法,而之前在你的servlet,

PrintWriter out=response.getWriter(); 

添加

response.setContentType("text/plain"); 
response.setCharacterEncoding("UTF-8"); 

希望这将工作

+0

不,它没有奏效。 – WakeUpSid

+0

http://stackoverflow.com/a/27107145/4233036 – Fahad