implements org.apache.jasper.runtime.JspSourceDependent 生成的java文件去工程目录下的.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\WebBase\org\apache\jsp 下找(WebBase)是工程名称既然jsp就是一个servlet为什么还需要一个jsp。我的答案是,jsp能更容易的和html代码整合,有助于展示逻辑,这也能在一定程度上让展示和java代码分开,可以使用javaBean,让编程相对容易。
jsp的使用主要涉及5个内置对象,和jsp便签。下面记录jsp中的内置独像。
out 在生成的java源码中可以看到 下面这样的声明,实例化。在servlet中是用new PringWriter(response.getOutPrintStream())来实现的
javax.servlet.jsp.JspWriter out = null;
out = pageContext.getOut();
使用的方式就是向页面输出一些东西,下面是一些java源码中生成的
out.write("\r\n");
out.write(" \r\n");
out.write(" <\r\n");
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
out.write("<title>Insert title here</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("<a href=\"");
PageContext 理解为当前页面的上下文环境,作用域也就局限于当前页面。具体用处在项目中体会
application web应用的上下文,其实就是servletContext application.setAttribute() 设置的变量能在整个web应用生存期内存在。
session 作用域是在整个回话中(浏览器关闭前)
request
response
这两个就不详细叙述了
还有一个Filter,可以对请求进行过滤,应用场景:权限用户是否登陆之类。
总结的不是很好,只是在让自己能多想想学得东西,真正的理解其中的原理好像还很远。至少要去看看tomacate是怎么处理一个请求的,是怎样把jsp代码转换成servlet
这些都是我继续的目标了。