struts2的JSP编译执行后还是SERVLET吗
最近看一个项目的源码的时候突然想起,既然struts2继承MVC设计模式,将视图与控制分离开,与SERVLET API的耦合降到最低,那么JSP编译执行之后的文件还是一个SERVLET吗?于是我在TOMCAT里面看了下,发现与纯JSP确实不一样,但是又很相似,大概是这种 这到底是什么?跟SERVLET有什么区别?请大虾们详细解下
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
import com.bbs.struts.DAO.*;
import com.bbs.struts.tl.*;
import java.util.*;
import com.bbs.struts.DAO.*;
public final class register_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();
private static java.util.List _jspx_dependants;
static {
_jspx_dependants = new java.util.ArrayList(4);
_jspx_dependants.add("/top.jsp");
_jspx_dependants.add("/top2.jsp");
_jspx_dependants.add("/footer.jsp");
_jspx_dependants.add("/WEB-INF/app.tld");
}
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fif_0026_005ftest;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005fid_005faction;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005felse;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005ftextfield_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fpassword_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fdefault_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fapp_005fdisplayCount_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005faction;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005ftextfield_0026_005fvalue_005fsize_005fname_005fmaxlength_005fid_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fradio_0026_005fvalue_005fname_005flist_005fcssStyle_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005ftextarea_0026_005frows_005fname_005fid_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fselect_0026_005fvalue_005frequired_005fonchange_005fname_005flist_005fid_005fheaderKey_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fonclick_005fcssClass_005fnobody;
private org.apache.jasper.runtime.TagHandlerPool _005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fnobody;
private javax.el.ExpressionFactory _el_expressionfactory;
private org.apache.AnnotationProcessor _jsp_annotationprocessor;
public Object getDependants() {
return _jspx_dependants;
}
public void _jspInit() {
_005fjspx_005ftagPool_005fs_005fif_0026_005ftest = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005fid_005faction = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005felse = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005ftextfield_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fpassword_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fdefault_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fapp_005fdisplayCount_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005faction = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005ftextfield_0026_005fvalue_005fsize_005fname_005fmaxlength_005fid_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fradio_0026_005fvalue_005fname_005flist_005fcssStyle_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005ftextarea_0026_005frows_005fname_005fid_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fselect_0026_005fvalue_005frequired_005fonchange_005fname_005flist_005fid_005fheaderKey_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fonclick_005fcssClass_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fnobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
}
public void _jspDestroy() {
_005fjspx_005ftagPool_005fs_005fif_0026_005ftest.release();
_005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005fid_005faction.release();
_005fjspx_005ftagPool_005fs_005felse.release();
_005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fnobody.release();
_005fjspx_005ftagPool_005fs_005ftextfield_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fpassword_0026_005fsize_005fname_005fmaxlength_005fid_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fproperty_0026_005fvalue_005fdefault_005fnobody.release();
_005fjspx_005ftagPool_005fapp_005fdisplayCount_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fform_0026_005fnamespace_005faction.release();
_005fjspx_005ftagPool_005fs_005ftextfield_0026_005fvalue_005fsize_005fname_005fmaxlength_005fid_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fradio_0026_005fvalue_005fname_005flist_005fcssStyle_005fnobody.release();
_005fjspx_005ftagPool_005fs_005ftextarea_0026_005frows_005fname_005fid_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fselect_0026_005fvalue_005frequired_005fonchange_005fname_005flist_005fid_005fheaderKey_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fonclick_005fcssClass_005fnobody.release();
_005fjspx_005ftagPool_005fs_005fsubmit_0026_005fvalue_005ftype_005fnobody.release();
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
。。。。。。。。。。。
[解决办法]
jsp其实还是java 文件!
[解决办法]
JSP编译执行之后的文件还是一个SERVLET,jsp是在servlet的基础上发展过来的
[解决办法]
<%= (this instanceof javax.servlet.Servlet) %>
jsp只是一个模板,最终运行的还是编译成Servlet的.class
[解决办法]
必须的! 不管是什么框架,他们这要是J2EE项目,最后使用的还是servlet,hibernate的底层使用的还是JDBC!
[解决办法]
public final class register_jsp extends org.apache.jasper.runtime.HttpJspBase
[解决办法]
for(;;);