Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从tomcat调用servlet会抛出HTTP状态500 java.lang.NullPointerException_Java_Eclipse_Jakarta Ee_Servlets_Tomcat7 - Fatal编程技术网

从tomcat调用servlet会抛出HTTP状态500 java.lang.NullPointerException

从tomcat调用servlet会抛出HTTP状态500 java.lang.NullPointerException,java,eclipse,jakarta-ee,servlets,tomcat7,Java,Eclipse,Jakarta Ee,Servlets,Tomcat7,我是J2EE新手,使用tomcat和eclipse构建了一个示例项目。虽然index.html加载正确,但当我提交页面(或调用servlet)时,我收到以下异常 HTTP Status 500 - type Exception report message description The server encountered an internal error that prevented it from fulfilling this request. exception java.la

我是J2EE新手,使用tomcat和eclipse构建了一个示例项目。虽然index.html加载正确,但当我提交页面(或调用servlet)时,我收到以下异常

HTTP Status 500 - 
type Exception report
message 
description The server encountered an internal error that prevented it from fulfilling this request.
exception 
java.lang.NullPointerException
java.util.concurrent.ConcurrentHashMap.putVal(Unknown Source)
java.util.concurrent.ConcurrentHashMap.putIfAbsent(Unknown Source)
java.lang.ClassLoader.getClassLoadingLock(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1641)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Unknown Source)
以下是我创建的文件

1) index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="SelectCoffee.do">
select coffee
<select name="taste" size="1">
<option value="dark">dark</option>
<option value="latte">latte</option>
<option value="cold">cold</option>
<option value="chocolate">chocolate</option>
</select>
<input type="submit">
</form>
</body>

在此处插入标题
精选咖啡
黑暗的
拿铁
寒冷的
巧克力

2) web.xml


喝咖啡
com.example.web.CoffeeSelect
喝咖啡
/选择咖啡
3) CoffeeSelect.java

package com.example.web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class CoffeeSelect extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws IOException,ServletException{
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("Cofee Advice");
    String c= "mine : " + request.getParameter("taste");
    out.println("<br>Got taste = "+c);
}}
package com.example.web;
导入javax.servlet.*;
导入javax.servlet.http.*;
导入java.io.*;
公共类CoffeeSelect扩展了HttpServlet{
public void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException、ServletException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“咖啡建议”);
String c=“mine:”+request.getParameter(“taste”);
out.println(“
Got taste=“+c”); }}

如果还需要什么,请告诉我。请帮助我,因为这可能会给我找到一份工作:(

是否将
类咖啡选择
内置到类文件夹中?在错误提示中,可能是找不到类。

检查
请求。getParameterValues(“taste”);

如果可能的话,从
servlet名称中删除空格,这将非常有效

index.html


在此处插入标题
精选咖啡
黑暗的
拿铁
寒冷的
巧克力
web.xml


咖啡精选
咖啡精选
咖啡精选
/精选咖啡
CoffeeSelect.java

package com.example.web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class CoffeeSelect extends HttpServlet{
public void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws IOException,ServletException{
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("Cofee Advice");
    String c= "mine : " + request.getParameter("taste");
    out.println("<br>Got taste = "+c);
}}
protectedvoidprocessrequest(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
out.println(“咖啡建议”);
String c=“mine:”+request.getParameter(“taste”);
out.println(“
Got taste=“+c”); }最后{ out.close(); } }
在您的webb.xml中,servlet类定义中有一个输入错误,它应该是
而不是
,可能servlet从未注册过,这就是为什么您会得到一个NullpointerExcepion 检查部署描述符(web.xml)注册servlet类时出错 因此,您将获得空指针异常。
用这个替换你的web.xml,现在它肯定能工作了

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  version="2.4">
<servlet>
<servlet-name>For Coffee</servlet-name>
<servlet-class>com.example.web.CoffeeSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>For Coffee</servlet-name>
<url-pattern>/SelectCoffee.do</url-pattern>
</servlet-mapping>
</web-app>

喝咖啡
com.example.web.CoffeeSelect
喝咖啡
/选择咖啡

这没有什么区别,您可以在url模式中使用自定义名称
<servlet>
        <servlet-name>CoffeeSelect</servlet-name>
        <servlet-class>CoffeeSelect</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>CoffeeSelect</servlet-name>
        <url-pattern>/SelectCoffee</url-pattern>
    </servlet-mapping>
 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {


out.println("Cofee Advice");
String c= "mine : " + request.getParameter("taste");
out.println("<br>Got taste = "+c);
    } finally {
        out.close();
    }
}
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  version="2.4">
<servlet>
<servlet-name>For Coffee</servlet-name>
<servlet-class>com.example.web.CoffeeSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>For Coffee</servlet-name>
<url-pattern>/SelectCoffee.do</url-pattern>
</servlet-mapping>
</web-app>