2012-08-02 60 views
5

在动态Web项目我有 - default.html和页面链接的jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<link rel="stylesheet" href="./Styles/Site.css" type="text/css" /> 
<title>Create new customer</title> 
</head> 
<body> 
    <a href="\WEB-INF\forms\CustomerMenu.jsp">Test new</a> 

</body> 
</html> 

我也CustomerMenu.jsp页面 -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<link rel="stylesheet" href="./Styles/Site.css" type="text/css" /> 
<title>Create new customer</title> 
</head> 
<body> 
    // Table .. 
</body> 
</html> 

的页面层次结构是作为快照 -

enter image description here

当我的链接按下default.html中,我得到错误信息

- HTTP Status 404 - 

-------------------------------------------------------------------------------- 

type Status report 

message 

description The requested resource() is not available. 

回答

9

文件中/WEB-INF文件夹也不是没有使用前端控制器servlet或类似<jsp:include>这确实无论是RequestDispatcher#forward()RequestDispatcher#include()特定的标签公开访问。

如果您需要通过URL直接访问JSP文件,那么您不应该将JSP放在/WEB-INF文件夹中。将它放在/WEB-INF文件夹外

WebContent 
|-- forms 
| |-- CreateNewCustomer.html 
| |-- CustomerMenu.html 
| `-- CustomerMenu.jsp 
|-- WEB-INF 
: : 

并相应地修复链接。

<a href="forms/CustomerMenu.jsp">Test new</a> 
+0

只是BalusC的一个想法,说/ WEB-INF文件夹是否作为Web容器的一部分受保护的文件夹,这就是为什么所有Web资产-images,css,js,...-都不包括在内。 – 2012-08-02 14:41:32

+0

@BalusC,WebContent中的文件夹必须调用“窗体”? – URL87 2012-08-02 15:40:25

+1

不是。你只是简单地把它叫做它。我只是没有触及它。我所做的只是把文件夹移到正确的地方。只要它是可公开访问的,您可以任意命名/构造它。你甚至可以完全摆脱它,只是把它的文件直接放在根文件夹('WebContent'文件夹,那里'default.html'文件也在那里)。 – BalusC 2012-08-02 15:41:09

1

WEB-INF文件夹不能在外面访问。 您需要将jsp移动到WEB-INF之外或使用转发请求转发到jsp。