我是编写Java Servlet的新手,我正在努力让一个简单的HelloWorld
示例正常工作。
HelloWorld.java类是:
package crunch;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
我正在运行Tomcat v7.0,并且已经阅读了类似的问题,回复指的是更改了invoker
中的servlet-mapping
web.xml
部分,此部分实际上并不存在我的,当我添加它时仍然会出现同样的问题。
答案 0 :(得分:21)
试试这个(如果是Java EE V6)
package crunch;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet(name="hello",urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
现在通过http://127.0.0.1:8080/yourapp/hello
其中8080是默认的tomcat端口,yourapp是applciation的上下文名称
答案 1 :(得分:11)
您肯定需要将servlet映射到某个URL。如果您使用Java EE 6(这至少意味着Servlet API 3.0),那么您可以注释您的servlet,如
@WebServlet(name="helloServlet", urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
//rest of the class
然后你可以转到localhost:8080/yourApp/hello
并显示值。如果你不能使用Servlet 3.0 API,你需要将这个servlet注册到web.xml
文件中,如
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>crunch.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
答案 2 :(得分:6)
如果使用Java EE 7
,编写Java servlet很容易@WebServlet("/hello-world")
public class HelloWorld extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World");
out.flush();
}
}
自servlet 3.0起
好消息是不再需要部署描述符!
阅读Java Servlets的教程。
答案 3 :(得分:2)
这可能是由于你在 WEB-INF 而不是 WebContent 文件夹中创建了.jsp或.html文件。
解决方案:只需将WEB-INF文件夹中的文件替换为Webcontent文件夹并尝试执行相同的操作 - 您将获得相应的输出
答案 4 :(得分:0)
对于那些坚持使用&#34;请求的资源不可用&#34;在Java EE 7和动态Web模块3.x中,这可能会有所帮助:&#34; Create Servlet&#34; Eclipse中的向导(在Mars中测试)不会为servlet类创建 @Path 注释,但我必须包含它才能成功访问公开的方法。
答案 5 :(得分:0)
您必须在动作attr中使用../../projectName/Filename.jsp。或者href
../ =包含当前文件夹simple(demo.project.filename.jsp)
Servlet只能通过1斜杠调用项目名称来调用..
答案 6 :(得分:-1)
我的问题出在web.xml
文件中。在一个<servlet-mapping>
中,<url-pattern>
内部出现错误:我忘记在网址前添加/
。