【问题标题】:In Tomcat6.0 "The requested resource () is not available." occurred在Tomcat6.0中“请求的资源()不可用”。发生了
【发布时间】:2013-12-01 18:48:58
【问题描述】:

昨天我在远程服务器上使用java servlet编程时遇到了一个问题。

我们的任务是构建一个简单的购物车,用户可以通过输入名称并单击“提交”来添加商品,然后将调用 servlet 并显示购买的商品。

在我编码之后,服务器告诉我错误“请求的资源 () 不可用”。每次。我搜索并尝试了所有我能找到的方法,但仍然不起作用。

代码如下:

HTML(/~usr/public_html/market.html)

<html>
<head>
<title>Online Shopping</title>
</head>

<body>
<h1>Online Shopping</h1>
Welcome to the online market!<br>
<br>
Please input the item you want to buy:<br>
<form action="http://localhost:8080/~usr/cart" method="get">
<input type="text" name="item"><br>
<input type="submit" value="Submit">
</form>

</body>

</html>

web.xml(/~usr/public_html/WEB-INF/web.xml)

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>cart</servlet-name>
<servlet-class>cart</servlet-class>

<servlet-mapping>
<servlet-name>cart</servlet-name>
<url-pattern>/cart</url-pattern>
</servlet-mapping>
</web-app>

Java代码(编译后放到/~usr/public_html/WEB-INF/classes/cart.class)

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.io.*;


public class cart extends HttpServlet
{   
    public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();

        HttpSession session = req.getSession(true);

        //get the previous number of items in cart. If none, creat it and initialize to zero
        Integer count = (Integer)session.getAttribute("count");
        if(count == null)
            count = new Integer(0);

        //declare a string reference to get the new added item, if it's null, don't add it
        String[] item_name;

        item_name = req.getParameterValues("item");
        if(item_name != null)
        {           
            count ++;
            session.setAttribute("count",count);    
            session.setAttribute("items"+count,item_name[0]);
        }

            out.println("<html>");
            out.println("<head>");
            out.println("<title>Items in Shopping Cart</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("New item successfully added to shopping cart.<br>");
            out.println("Your cart contains X items.<br><br>");
            out.println("<center><h1>The items you purchased:</h1>");

            for(int i=1; i<=count; i++)
                {
                    String goods = (String)session.getAttribute("items"+i);
                    out.println("Item #"+i+": "+goods+"<br>");
                }


            out.println("</center></body>");
            out.println("</html>");

            out.close();
    }



}

Tomcat 和服务器是由教授预先配置的,我只是按照规则将这些文件放在哪里等等。

【问题讨论】:

  • 您的 WAR 名称是什么?默认情况下,它将通过hostname:port/war/servlet 访问——我现在只知道servlet/cart。我非常怀疑您的 WAR 是否被称为 ~usr.war,但我可能是错的。
  • 其实~usr/是我在服务器中的用户名。这个服务器也是其他同学共享的,所以我只能访问我自己的用户文件夹。我不知道你叫什么“战争”,因为tomcat已经设置好了,我们应该做的是按照规则创建具有特定名称的文件夹并将正确的东西放入正确的文件夹中。我的同学已经成功运行它。我试着把我的代码修改成他的风格,但还是不行。
  • 文件结构已添加为提交答案的注释

标签: jakarta-ee tomcat servlets tomcat6


【解决方案1】:

您不需要完整路径,请在下面替换

<form action="http://localhost:8080/~usr/cart" method="get">

有关注

<form action="cart" method="get">

【讨论】:

  • 试试action="/cart"
  • 不看你的项目结构很难说,你能不能看看你的详细文件资源管理器和web.xml。
  • 在文件夹 /public_html 中有 market.html 和另一个文件夹“WEB-INF”。在 /public_html/WEB-INF/ 中有问题中提到的 web.xml 和另一个文件夹“classes”。在 /public_html/WEB-INF/classes/ 中有 cart.class。就是这样。
【解决方案2】:

该项目部署正确吗?你能检查一下服务器日志吗?并检查war是否已经解压到webapps文件夹中。

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 2015-05-26
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    相关资源
    最近更新 更多