我已经安装了Tomcat并且我一直在测试它:我写了一些.html和.jsp文件然后在服务器中尝试过。它们似乎在一起正常工作。例如:我正在尝试的这些文件允许我将文件上传到服务器并将其名称写入数据库(MySQL)。完成后,我有一个按钮,允许我上传另一个文件,或者我可以查阅存储在数据库中的文件的名称。
当我需要运行servlet时,我的问题出现了。我正在尝试一个基本的:
package HelloWorldServlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloWorldServlet extends HttpServlet {
public void init(ServletConfig conf)
throws ServletException
{
super.init(conf);
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello World</h1;>");
out.println("</body>");
out.println("</html>");
}
}
从那里我得到一个.class文件。我把这个文件放在:webapps / HelloWord / web-inf / classes
我真的不知道如何修改web.xml文件以及如何从.html或.jsp页面调用此servlet。
答案 0 :(得分:3)
首先,您的web-inf目录必须为大写(WEB-INF)。
基本web.xml如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<!--
This is arbitrary name for your servlet,
used in servlet-mapping below
-->
<servlet-name>HelloWorld</servlet-name>
<!-- Name of your servlet class -->
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<!--
Here you say location (under context) where your servlet
can receive requests.
-->
<url-pattern>/hello-world</url-pattern>
</servlet-mapping>
</web-app>
您的web.xml必须保存在<your-app>/WEB-INF/web.xml
路径中。
现在,只要浏览器访问服务器上的http://localhost/HelloWorld/hello-world,我们就会调用您的servlet,因为它被映射到/hello-world
,并且因为您的应用程序部署在HelloWorld
目录中(因此映射)到/ HelloWorld上下文)。
答案 1 :(得分:1)
首先,将Servlet类映射到名称。然后将名称映射到url-pattern。 url模式可以是单个路径,也可以是“globbing”模式,如/ path / *或只是/ *
类似的东西:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="TestApp" version="2.4" 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Test App</display-name>
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>