我非常非常新的Web开发,我试图用java创建一个servlet。我已经想出如何设置一个apache tomcat服务器。现在,服务器具有以下文件结构:
tomcat6: -work -Catalina -localhost -_ -catalina.policy -webapps -ROOT -META-INF -index.html -shared -classes -server -classes -logs -localhost.2012-05-19.log -catalina.out -catalina.2012-05-19.log -conf -policy.d -lots of .policy files -catalina -localhost -ROOT.xml -web.xml -tomcat-useres.xml -server.xml -logging.pproperties -context.xml -pcatalina.properties -common -classes
我刚刚在NetBeans中编辑了一个aouto生成的servlet,并且在IDE中它工作正常,但是我把它放在我的tomcat服务器上,我得到404,或者它只是尝试下载.class文件。
我应该把classto放在哪里使它工作?
答案 0 :(得分:2)
您必须构建一个WAR文件,然后将warfile放入webapps目录。
答案 1 :(得分:1)
您需要告诉tomcat您的webapp具有servlet,实现servlet的类以及servlet映射到的URL路径。这是在WEB-INF/web.xml
。
首先,您需要在web.xml
中定义servlet:
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>com.foo.myapp.servlets.HelloWorld</servlet-class>
</servlet>
然后,您需要将servlet(通过其servlet-name
)映射到URL路径,同样位于web.xml
:
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
假设你有tomcat侦听端口8080,如果你去
http://your.tomcat.host:8080/webappname/HelloWorld
你会点击servlet。
请注意HelloWorldServlet
是任意文字。它可以是任何东西,也不必与类名或URL路径相关(尽管它与它们相似是有用的)。重要的是,您在servlet-name
标记和servlet
标记中的servlet-mapping
标记中使用相同的字符串。
要编写servlet,您需要实现Servlet
接口。 然而你很少直接这样做。相反,您(最常见)扩展HttpServlet
并覆盖一个或多个doXXX()
方法。如果您没有编写基于HTTP的servlet,则可以扩展GenericServlet
并覆盖service()
方法。 Servlet API之外的其他库可以提供您可以扩展的其他特定于协议的servlet基类。
答案 2 :(得分:0)
如果您在没有任何IDE的情况下手动执行此操作,那么这就是结构
Apache Tomcat folder --> wep-app folder --> your_web_app_name --> WEB-INF,.html,.jsp
|
|--> classes
|
|--> lib
|
|--> web.xml (Description Descriptor)