servlet不工作(也有空指针错误),servlet无法';无法从javascript获取值

servlet不工作(也有空指针错误),servlet无法';无法从javascript获取值,javascript,html,tomcat,servlets,Javascript,Html,Tomcat,Servlets,我找不到servlet不在这里工作的原因 因此,在html中,我有一个选择国家字段,首先为空。一旦我单击下拉菜单不选择任何内容,然后单击其他任何位置,它将在字段旁边显示错误消息(请选择一个国家) html: servlet: 在servlet中,如果我不添加if(c!=null)条件,它将给出null指针错误。我尝试在浏览器中键入,以测试servlet是否正常工作。同样,如果我不添加如果(c!=null),它会给出HTTP状态500-java.lang.NullPointerException

我找不到servlet不在这里工作的原因

因此,在html中,我有一个选择国家字段,首先为空。一旦我单击下拉菜单不选择任何内容,然后单击其他任何位置,它将在字段旁边显示错误消息(请选择一个国家)

html:

servlet:

在servlet中,如果我不添加
if(c!=null)
条件,它将给出null指针错误。我尝试在浏览器中键入,以测试servlet是否正常工作。同样,如果我不添加
如果(c!=null)
,它会给出HTTP状态500-java.lang.NullPointerException

然而,无论我在country字段中选择什么,servlet中的字符串c总是空的。 此外,即使字符串c为null,那么,
out.print(“*testing!*”)
也应该返回到
var return\u data=req.responseText
(在javascript中),但它没有返回。国家/地区字段旁边没有错误消息:“正在测试”

我检查了apache文件夹

C:\apache-tomcat-7.0.68\work\Catalina\localhost/ibmProject

它是空的,它应该有一些文件吗

我意识到
警报(“嗨,这里是validateCountry内部”)
;(javascript)从不执行。
所以,我想问题在于
var url=”http://localhost:8080/ibmProject/servlet?select-country=“+t.值()”(在javascript中)
这条线。
java位于此处。
NetBeansProject\ibmProject\src\java

html、javascript和css都在这里: \NetBeansProject\ibmProject\web

public class servlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {
        response.setContentType("text/plain;charset=UTF-8");
        //response.setHeader("Access-Control-Allow-Origin", "*");
        PrintWriter out = response.getWriter();
        String c = request.getParameter("select-country");
        if(c!=null)
        {
            System.out.println("Finally!!!!!!!!!!!!!!!!!!!!------------------------------------"+c);
            if (c.equals(""))
            {
                out.print("*Please select a country!*");
            }  
            else 
            {
                out.print("");
            }
        }
        else
        {
            out.print("*testing...!*");
        }
    }

web.xml:

<servlet>
        <servlet-name>servlet</servlet-name>
        <servlet-class>servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>

servlet
servlet
servlet
/servlet
30
有人能帮忙吗?
非常感谢

如果从未调用您的
onblur
处理程序:您是否检查过它的可用性,例如使用Firebug或浏览器的开发工具?只要通过一个临时按钮自愿地执行它,并将控制台放在视线范围内——它可能是某个地方的一个简单的打字错误。另外,我不太明白为什么从未调用您的
validateCountry()
(或其中的警报),但您仍然会遇到servlet问题

说到servlet:您是如何在
processRequest()
中实现您的逻辑的


按照中的建议将其移动到
doGet()
service()
。它将在适当的位置,如果参数存在于请求中,它将可用。如果愿意,可以在那里设置一个断点,并检查请求对象中的参数,以了解实际获得的数据。

谢谢,这里有一个简单的输入错误。var url=”“+t.value();--<在这里应该是t值
public class servlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {
        response.setContentType("text/plain;charset=UTF-8");
        //response.setHeader("Access-Control-Allow-Origin", "*");
        PrintWriter out = response.getWriter();
        String c = request.getParameter("select-country");
        if(c!=null)
        {
            System.out.println("Finally!!!!!!!!!!!!!!!!!!!!------------------------------------"+c);
            if (c.equals(""))
            {
                out.print("*Please select a country!*");
            }  
            else 
            {
                out.print("");
            }
        }
        else
        {
            out.print("*testing...!*");
        }
    }
<servlet>
        <servlet-name>servlet</servlet-name>
        <servlet-class>servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>