易截截图软件、单文件、免安装、纯绿色、仅160KB

JSP的运行内幕[转]

JSP的运行内幕
经常有朋友问起,JSP和Servlet之间有什么区别,两者之间又有什么联系?其实Servlet技术的出现时间很早,是当时为了Java的服务器端应用而开发的。大家都知道Applet是应用小程序,Servlet就是服务器端小程序了。但在Microsoft公司的ASP技术出现后,使用 Servlet进行响应输出时一行行的输出语句就显得非常笨拙,对于复杂布局或者显示页面更是如此。JSP就是为了满足这种需求在Servlet技术之上开发的。可见,JSP和Servlet之间有着内在的血缘关系,在学习JSP时,如果能够抓住这种联系,就能更深刻地理解JSP的运行机理,达到事半功倍的效果。
本文将通过对一个JSP运行过程的剖析,深入JSP运行的内幕,并从全新的视角阐述一些JSP中的技术要点。
HelloWorld.jsp
我们以Tomcat 4.1.17服务器为例,来看看最简单的HelloWorld.jsp是怎么运行的。
代码清单1:HelloWorld.jsp
HelloWorld.jsp
<%
String message = "Hello World!";
%>
<%=message%>
  这个文件非常简单,仅仅定义了一个String的变量,并且输出。把这个文件放到Tomcat的webappsROOT目录下,启动Tomcat,在浏览器中访问http://localhost:8080/HelloWorld.jsp,浏览器中的输出为“HelloWorld!”
  让我们来看看Tomcat都做了什么。转到Tomcat的workStandalonelocalhost\_目录下,可以找到如下的HelloWorld_jsp.java,这个文件就是Tomcat解析HelloWorld.jsp时生成的源文件:
  代码清单2:HelloWorld_jsp.java
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
public class HelloWorld_jsp extends HttpJspBase {
......
public void _jspService(HttpServletRequest request,
HttpServletResponse response)throws java.io.IOException, ServletException
{
JspFactory _jspxFactory = null;
javax.servlet.jsp.PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
try {
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html;charset=ISO-8859-1");
pageContext = _jspxFactory.getPageContext(this, request, resp


相关文档:

jsp页面获取Action变量值(不通过标签)


关键字: struts2 webwork
今天遇到一个情况,要在jsp页面上处理查询出来list页的一些数据,改变Action类太麻烦,于是想到从页面上直接获取Action中的变量值,并进行操作,现在把获取方法记录一下,以便以后查询.
如果在Action类里有一个简单的变量,并且已经写好了它的get和set方法
private String test="jsp  ......

jsp上传头像以及生成缩略图


<%@ page autoFlush="false" contentType="text/html;charset=utf-8" language="java" import="java.io.*,java.awt.Image,java.awt.image.*,com.sun.image.codec.jpeg.*,java.sql.*,com.jspsmart.upload.*,java.util.*,java.io.FileInputStream,java.io.FileOutputStream,java.awt.*"%>
<%@ page import="com.b ......

JSP页面强制不缓存的方法

有的页面需要每次点击进去都动态更新,而不是读取缓存中的页面。
在JSP中可以这样实现:
<%
request.setCharacterEncoding("GBK");
response.addDateHeader("Expires",0);
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");

%> ......

分页栏 jsp 代码

************************************************************************
分页的代码:
--------------CSS样式--------------
<style type="text/css">
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333;
}
body {
margin-left: 0px;
margin-top: 0px;
......

完成你的自定义JSP Tag标签-Basic Coustom Tag

说明:基于Eclipse 3.2 + Tomcat 4.0编译完成
1.完成你自己的Tag Class,javax.servlet.jsp中提供一个Tag接口类
TagSupport 和 BodyTagSupport两个类,你自己的Tag Class必须
extends其中一个。本例中HrefTag Class extends TagSupport类,并
完成了doStratTag方法的重写,主要代码如下:
public int doStartTag(){
J ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号