Start Tomcat v8.0 Server at localhost
1、看到上面的黑体字了吗?
哪里就是出现该错误的原因。
Caused by: java.lang.IllegalArgumentException: The servlets named [helloworld] and [HelloWorld] are both mapped to the url-pattern [/HelloWorld] which is not permitted
at org.apache.tomcat.util.descriptor.web.WebXml.addServletMapping(WebXml.java:308)
2、Servlet的时候eclipse已经帮助建好了url-patten。
@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloWorld() {
super();
// TODO Auto-generated constructor stub
}
/**
* @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
String u_name=request.getParameter("u_name");
String ad="Welcome,"+u_name;
request.setAttribute("ad", ad);
request.getRequestDispatcher("/welcome.jsp").forward(request, response);
}
}
3、打开你的Servlet类,你会发现在类上面有一个@WebServlet("/HelloWorld")。
如果你在web.xml里面这样写:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
就是报错。
4、解决方法一:
去掉类上面的@WebServlet("/HelloWorld")。在web.xml写<servlet-mapping>。
5、解决方法二:
在web.xml里不写 <servlet-mapping>,而要保留@WebServlet("/HelloWorld")。如下web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>HelloWorld</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
</web-app>