JSP WEBServer的实现原理
因为要实现一个WebServer,写完了一个简单的WebServer后突发奇想,何不实现一个JSP 的WebServer呢?
有了这个想法后,就开始考虑JSP的实现原理,其实JSP的实现也很简单,说白了就是将其转换成一个Java文件,再对这个Java文件进行编译,生成类文件,接着再由服务器使用这个类文件。从总体上分,可以将JSP文件的内容划分为两大块,即输出语句和控制语句。
至于JSP文件中的HTML语句就是我们要输出的内容,而JSP标签则是控制HTML语句的输出。例如,有一个JSP文件的内容如下:
<html>
<body>
<%! java.util.Date date=new java.util.Date();
int size=10;
%>
<% for(int i=0;i<size;i++){ %>
<h1>Hello<%= i %>
</h1>
<% } %>
<%=date%>
</body>
</html>
这个JSP文件将产生如下效果:
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
Hello 6
Hello 7
Hello 8
Hello 9
Thu Dec 16 18:30:21 CST 2004
那么,现在的问题就是我们就生成什么样的java文件,才能获得正确的结果。
首选写一个Interface,该接口就是我们要生成的JAVA文件将要继承的接口。其定义如下:
package httpserver;
import java.net.Socket;
import java.io.IOException;
public interface Jsp2HtmlInterface{
void printHtml(Socket socket)throws IOException;
}
接
下来就写一个类JavaServerPage负责解析JSP文件,在这个类中将会动态生成JAVA文件,并编译生成一个可用类。再调用这个类文件的
printHtml(socket)
方法,将响应信息写给客户端(其中socket为服务器accept返回的套接口。这样客户就能看到JSP正确运行的结果。这个解析
JavaServerPage的类框架如下:
public class JavaServerPage{
public JavaServerPage(File file,Socket socket)throws Exception{} //file为客户端请求的一个JSP文件
&n
相关文档:
JavaScript代码:
//办事处抽取比例改变,更新其他数据
....function changeOfficeSampleScale(obj,flushOfficeRow){
var row=obj.parentNode.parentNode; //取得所在行
var officeCode=row.id; //取得行的Id
if(i ......
如果web.xml里面的<web-app>是version="2.4",那么就要在<jsp-property-group>里设置。如果version="2.5"就不需要。
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/javae ......
不说废话了,看下面的例子吧(利用structs实现):
在WEB-INF下有两个页面: a.jsp 和 b.jsp , 现在要实现从a.jsp连接到b.jsp
在a.jsp中:
<html:link action= ......
我的jsp编程环境也是最近才搭建起来的,用的是windows2003+ecplise+tomcat+lomboz+sql Server 2000,搭建的过程中吃了不少的苦头,在搭建的过程中总结了一些经验,对于jsp搭建在网上有不少的介绍,搭建起来比较容易,下面主要介绍在jsp搭建起来后连接数据库要注意的地方:
(1)数据库的版本选择要正确,选择的版本和 ......
建立自已的web目录
可以将JSP页面程序部署在Tomcat服务器的默认web目录下,也可以部署在自已创建的web目录下。下面是创建web目录的步骤:
1).在服务器上创建自已的目录
如,创建一目录: E:\test\10
2).配置web目录
用记事本打开 \Tomcat 5.0\conf目录下的文件s ......