My simple project structure is shown in this link. I am using Eclipse and Tomcat 6.
There is login.jsp
which submits its form to login_servlet
. The login_servlet
sets a session variable and then redirects to home.jsp
. The home.jsp
file has links to the 4 JSP files under a directory called /sam
. In web.xml
I have given the url-pattern
as /sam/*
for the LogFiler
filter.
The LogFilter
just reads the session variable and does doChain(request,resposne)
if valid, else it redirects to /login.jsp
.
RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
rd.forward(request,response);
Basically I don't want anyone to access files inside /sam
directory directly. Now let's say, I try to directly access a file inside /sam
directory, the filter kicks in and the redirection to login.jsp
works and even the broswers contents are that of login.jsp
, but the url in the browser doesn't change. When I enter details and press submit, instead of sending the data to login_servlet
, it sends it to sam/login_servlet
and then tomcat tells me there is no such servlet here! Obviously there isn't. My doubt is why is it sending it so sam/login_servlet
instead of /login_servlet
which is usually what it does when I start running the login.jsp
on my own.
One more thing, is there a way I can apply the servlet to ONLY .jsp
files inside /sam
diectory? I tried giving the url-pattern
like /sam/*.jsp
, but Tomcat was refusing to accept that url-pattern
.