HTTP状态404请求的资源不可用

时间:2014-08-10 05:37:01

标签: jsp servlets

自从一周以来,我一直在努力为我的问题找到解决方案但却无法成功。 这种类型的问题可能超过100个,但它们根本没有帮助我。 请问是否有人可以解释究竟是什么是URL映射以及如何完成?

我正在使用tomcat 7和eclipse java EE。我的jsp文件运行正常但是当我单击提交时出现错误。我试过差不多了。请告诉我我正在犯的错误。

这是我的jsp代码:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="/calculator/calc">
<input type="text" name="n1"><br>
<input type="text" name="n2"><br>
<input type="submit">
</form>
</body>
</html>

Servlet代码:

public class calc extends GenericServlet 
{
public void service(ServletRequest req,ServletResponse res) throws IOException
{
    res.setContentType("text/jsp");
    PrintWriter pw=res.getWriter();
    String s1=req.getParameter("n1");
    String s2=req.getParameter("n2");
    int a=Integer.parseInt(s1);
    int b=Integer.parseInt(s2);
    pw.println(a+b);
   }
}

和web.xml

<?xml version="1.0" encoding="UTF-8"?>

<display-name>calculator</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
</web-app>

2 个答案:

答案 0 :(得分:2)

web.xml 中,您需要为servlet指定一个名称,指明将为其提供服务的类:

<servlet>
    <servlet-name>mycalc</servlet-name>
    <servlet-class>yourpackage.calc</servlet-class>
</servlet>

然后将url映射到servlet ...

<servlet-mapping>
    <servlet-name>mycalc</servlet-name>
    <url-pattern>/calculator/calc</url-pattern>
</servlet-mapping>

你在servlet-mapping中放入的url是你必须放在帖子的动作中的那个

答案 1 :(得分:0)

在您的表单的操作中,您将网址指定为/calculator/calc,因此在您的web.xml Ithe容器dint中找到网址的任何映射,即使您没有使用基于注释的映射尝试这样的事情

<servlet>
    <servlet-name>s1</servlet-name>
    <servlet-class>packageName.servletName</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>s1</servlet-name>
    <url-pattern>/calculator/calc</url-pattern>
</servlet-mapping>

@WebServlet(name="calServlet", urlPatterns = { "/calculator/calc" })

高于你的班级定义。但请记住,如果你使用它,则不需要在web.xml中指定映射,但是你应该有Servlet-3和tomcat 7