hi all,
i'm developing a little framework for some web applications i am going to
do. I wanted to build my own JspBase Model by creating a abstract class
(similar to HttpJspBase that comes with Jasper) implementing the
javax.servlet.jsp.JspPage interface.
all i wanted to do is to change the class from calling
"_jspService(HttpServletRequest, HttpServletResponse)..." from the
"service(ServletRequest, ServletResponse)" method to
"_jspService(MyServletRequest, MyServletResponse)...".
During the processing of the request i'll wrap a custom
HttpServletRequestWrapper, ResponseWrapper over the current request/response
objects.
currently i have a request, response object which are (if i do instanceof)
instances of my wrapper objects in my jsp. Howoever i have to do
MyServletRequest myrequest = (MyServletRequest)request;
MyServletResponse myresponse = (MyServletResponse)response;
in every Jsp to use any methods/object from my wrapped objects. im trying to
do that cause i don't want to use the "common" way [eg. put every object
into request.setAttribute, instead i wanted to have
request.getSomeInfoMyFrameworkHasForMe()]. All this works if i just cast it
in the jsp _but_ i wonder if there is a way to do it without casting and
just through my JspBase class.
if i try all this now i get
HTTP Status 503 - [javax.servlet.ServletException:
MyJspBase._jspService(LMyRequest;LMyResponse;)V]
from tomcat because he translates the jsp to the "wrong"
"_jspService(Http..., Http...)" and not "_jspService(My..., My...)"
Am I violating any jsp/servlet specs with what im trying to do or am i just
on the wrong way or is it a limitation from tomcat/jasper im running into?
Can i tell him somewhere that the variable request inside _jspService is an
instance of MyRequest not HttpServletRequest?
I hope this was understandable (trying to explain an idea i have in mind is
pretty hard sometimes :) and someone read this far. I really would
appreciate any comments/help on this. Maybe there is another way to do it
and i'm just overlooking it.
thanks in advance,
thomas
PS:
my JspBase class
[--- START: MyJspBase.java ---]
import java.io.IOException;
import javax.servlet.jsp.JspPage;
import javax.servlet.ServletConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletException;
public abstract class MyJspBase implements JspPage
{
private ServletConfig config;
public void init(ServletConfig config)
{
this.config = config;
}
public void destroy()
{
}
public ServletConfig getServletConfig()
{
return config;
}
public String getServletInfo()
{
return "info";
}
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{
// this shouldnt happen .. just for curiosity reasons .. remove soon
if (response instanceof MyServletResponse)
throw new ServletException("eeks, no framework response");
_jspService((MyServletRequest)request, (MyServletResponse)response);
}
public void jspInit()
{
}
public void jspDestroy()
{
}
public abstract void _jspService(MyServletRequest request,
MyServletResponse response) throws java.io.IOException,
javax.servlet.ServletException;
}
[--- END: MyJspBase.java ---]
[--- START: test.jsp ---]
<%@ page extends="MyJspBase" %>
<%
out.print("hmpf this isnt reached");
%>
[--- END: test.jsp ---]
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>