I created a JSP file.
sample.jsp
<%@ page pageEncoding=\"UTF-8\"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
This is jsp program
</body>
</html>
I placed it here in the samplejsp
project.
samplejsp
`-- WebContent
`-- WEB-INF
`-- sample.jsp
I opened it on the following URL.
http://localhost:8080/samplejsp/sample.jsp
But it shows the following error in browser.
404 ERROR
The requested resource (/sample.jsp) is not available.
404 simply means \"Not Found\".
Either the URL is wrong (note: case sensitive!), or the resource is not there where you think it is.
Just verify the URL and/or verify if the resource is there where you\'d expect it to be. You placed sample.jsp
in /WEB-INF
folder. This way it is not publicly accessible without calling through a front controller servlet.
Put it outside /WEB-INF
.
samplejsp
`-- WebContent
|-- WEB-INF
`-- sample.jsp
If you want to keep it in /WEB-INF
, then you need to create a front controller servlet which forwards to it in doGet()
method as below.
request.getRequestDispatcher(\"/WEB-INF/sample.jsp\").forward(request, response);
Finally \"open\" the JSP by just calling servlet\'s actual URL instead of JSP\'s fictive URL.
See also:
- What is WEB-INF used for in a Java EE web application?
- Calling servlet from JSP
- doGet and doPost in Servlets
It\'s mostly related to your directory structure or packaging.
Can you please add your directory structure?
Similar to below -
src
|-html\\
|-jsp\\
Perhaps this should do it
<form action=\"sample.jsp\" method=get>
<input type =submit value=\"submit\">
</form>
Edit - WEB-INF does not allow direct access to JSP.