<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet-name>BaseServlet</servlet-name>
<servlet-class>BaseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BaseServlet</servlet-name>
<!--<url-pattern>/servlet/BaseServlet</url-pattern>-->
<url-pattern>ServletTest/BaseServlet</url-pattern>
</servlet-mapping>
现在web.xml配置文件的标签是红色,也是红色。这里到底有啥问题呢?
ServletTest是工程名称 BaseServlet 是一个类。
里面get方法中很简单的代码
public class BaseServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{
System.out.print("客户端访问我了2");
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException{
System.out.print("客户端访问我了1");
//this.doPost(request,response);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String title = "HTTP Header 请求实例 - 菜鸟教程实例";
String docType =
"<!DOCTYPE html> \n";
out.println(docType +
"<html>\n" +
"<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"+
"<body bgcolor=\"#f0f0f0\">\n" +
"<h1 align=\"center\">" + title + "</h1>\n" +
"<table width=\"100%\" border=\"1\" align=\"center\">\n" +
"<tr bgcolor=\"#949494\">\n" +
"<th>Header 名称</th><th>Header 值</th>\n"+
"</tr>\n");
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
out.println("</table>\n</body></html>");
}
这么点代码咋都不能运行呢
截图看看吧,这样看不如直接看项目报错点来的快。将鼠标右键放到报错点上显示报错信息,截图来看看
什么错误啊,和不要一样啊路径要写完整。
BaseServlet 怎么不是包名.类名的形式?
<url-pattern>ServletTest/BaseServlet</url-pattern> 这里的路径不包括项目名的吧??
还有是不是报404的错误? 即使报404 页 也可能是页面找不到而不是请求找不到!!! 如果我说的问题存在,建议先解决!!!
/Users/xuetianhhb/Library/apache-tomcat-8.5.16/bin/catalina.sh run
[2017-08-04 11:49:29,842] Artifact web:war exploded: Server is not connected. Deploy is not available.
04-Aug-2017 11:49:36.747 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.5.16
04-Aug-2017 11:49:36.752 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jun 21 2017 17:01:09 UTC
04-Aug-2017 11:49:36.752 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server number: 8.5.16.0
04-Aug-2017 11:49:36.752 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Mac OS X
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 10.12.5
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: x86_64
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_131-b11
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /Users/xuetianhhb/Library/Caches/IntelliJIdea2017.1/tomcat/Unnamed_ServletTest
04-Aug-2017 11:49:36.753 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /Users/xuetianhhb/Library/apache-tomcat-8.5.16
04-Aug-2017 11:49:36.754 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/Users/xuetianhhb/Library/Caches/IntelliJIdea2017.1/tomcat/Unnamed_ServletTest/conf/logging.properties
04-Aug-2017 11:49:36.754 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
04-Aug-2017 11:49:36.754 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote=
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
04-Aug-2017 11:49:36.755 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
04-Aug-2017 11:49:36.756 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/Users/xuetianhhb/Library/Caches/IntelliJIdea2017.1/tomcat/Unnamed_ServletTest
04-Aug-2017 11:49:36.756 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/Users/xuetianhhb/Library/apache-tomcat-8.5.16
04-Aug-2017 11:49:36.756 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/Users/xuetianhhb/Library/apache-tomcat-8.5.16/temp
04-Aug-2017 11:49:36.756 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/xuetianhhb/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
04-Aug-2017 11:49:37.041 信息 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8081"]
04-Aug-2017 11:49:37.087 信息 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
04-Aug-2017 11:49:37.090 信息 [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
04-Aug-2017 11:49:37.092 信息 [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
04-Aug-2017 11:49:37.103 信息 [main] org.apache.catalina.startup.Catalina.load Initialization processed in 891 ms
04-Aug-2017 11:49:37.153 信息 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
04-Aug-2017 11:49:37.153 信息 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.16
04-Aug-2017 11:49:37.161 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8081"]
04-Aug-2017 11:49:37.171 信息 [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
04-Aug-2017 11:49:37.173 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 69 ms
Connected to server
[2017-08-04 11:49:37,457] Artifact web:war exploded: Artifact is being deployed, please wait...
[2017-08-04 11:49:38,070] Artifact web:war exploded: Artifact is deployed successfully
[2017-08-04 11:49:38,070] Artifact web:war exploded: Deploy took 613 milliseconds
04-Aug-2017 11:49:47.167 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/Users/xuetianhhb/Library/apache-tomcat-8.5.16/webapps/manager]
04-Aug-2017 11:49:47.207 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/Users/xuetianhhb/Library/apache-tomcat-8.5.16/webapps/manager] has finished in [39] ms
我把前面的项目名称去掉了
变成 /BaseServlet
运行后 log贴出来了 这样的log是不是失败?
很感谢上面回答问题的朋友,问题已经找出!
原因是 ServletTest/BaseServlet 要去掉工程名称:ServletTest
写成这样ok /BaseServlet