毕 业 实 习 报 告Word文档格式.docx
《毕 业 实 习 报 告Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕 业 实 习 报 告Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。
每个客户端请求对应一个线程。
以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。
如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。
虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。
此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。
当这种情况发生时jspDestroy()方法首先被调用,
然后servlet实例便被标记加入"
垃圾收集"
处理。
jspInit()及jspDestory()格式如下:
可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。
<
%!
public
void
jspInit()
{
System.out.println("
jspinit"
);
}
%>
jspDestory()
jspDestory"
二、服务端的输出缓冲区
缺省情况下:
服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:
该JSP网页已完成信息的输出
输出缓冲区已满
JSP中调用了out.flush()或response.flushbuffer()
输出缓冲区的大小可以用:
或response.setBufferSize()设置,如下:
设置输出缓冲区的大小为1KB。
或response.setBufferSize
(1);
设置输出缓冲区的大小为0,即不缓冲。
或response.setBufferSize(0);
用response.getBufferSize()或out.getBufferSize()可取的输出缓冲区的大小,单位为字节.
用response.isCommitted()可检查看服务端是否已将数据输出到客户端.
如果返回值是TRUE则已将数据输出到客户端,是FALSE则还没有.
三、服务端输出重定向
有以下3种方法可以做到输出重定向:
RESPONSE.SETREDERECT("
URL"
)
该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.
response.sendRedirect("
http:
//localhost:
7001/index.html"
下面的方法也能改变HTTP
HEADER属性,它的原理和
1
是一样的.
%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String
newLocn="
/index.html"
;
response.setHeader("
Location"
newLocn);
>
采用<
JSP:
FORWORD>
该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<
之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
如下面的例子中
(1)会输出index.html的内容,2
不会输出index.html的内容,而是输出out.println("
@@@@@@@@@@@@@@@@@"
中的内容,并且在服务端会抛出:
java.lang.IllegalStateException:
Response
already
committed
异常,但客户端没有任何错误输出。
(1)
%@page
buffer="
1kb"
long
i=0;
for(i=0;
i<
10;
i++)
out.println("
jsp:
forward
page="
./index.html"
/>
(2)
600;
说明:
1.
方法
(1),
(2)可以使用变量表示重定向的地址;
方法(3)不能使用变量表示重定向的地址。
add="
page=
add
无法重定向到index.html中去
add=http:
7001/index.html
response.sendRedirect(add);
可以重定向到http:
7001/index.html中去。
2.
采用方法
(1),
(2)request中的变量(通过request.setAttribute()保存到request中的值)不能在新的页面中采用,采用方法(3)能.
综上,我们应该采用
(1),
(2)重定向比较好.
四、JSP基本配置:
第一步:
下载j2sdk和tomcat:
到sun官方站点(
Offline
Installation的SDK,同时最好下载J2SE
1.4.2
Documentation,然后到tomcat官方站点(http:
//www.apache.org/dist/jakarta/tomcat-4/)下载tomcat(下载最新4.1.x版本的tomcat);
第二步:
安装和配置你的j2sdk和tomcat:
执行j2sdk和tomcat的安装程序,然后按默认设置进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->
属性->
高级->
环境变量->
系统变量中添加以下环境变量(假定你的j2sdk安装在c:
\j2sdk1.4.2):
JAVA_HOME=c:
\j2sdk1.4.2
classpath=.;
%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar;
(.;
一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
class
Test{
static
main(String
args[]){
This
is
a
test
program."
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac
Test.java
java
Test
此时如果看到打印出来This
program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->
系统变量中添加以下环境变量(假定你的tomcat安装在c:
\tomcat):
CATALINA_HOME=c:
\tomcat;
CATALINA_BASE=c:
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:
%CATALINA_HOME%\common\lib\servlet.jar;
接着可以启动tomcat,在IE中访问http:
8080
如果看到tomcat的欢迎页面的话说明安装成功了。
五、JSP与SQL的调试
JSP用Jdbc与SQL
数据库连接
安装JSP访问SQL
2000的驱动程序:
从微软的网站上下载驱动程序:
SQL Server 2000 For JDBC 驱动程序,在XX中随便搜索就有。
然后将它安装好。
(比如安装目录是D:
\SQLDriverForJDBC。
)
然后必须将安装目录中的lib目录下三个jar文件:
msbase.jar,mssqlserver.jar,msutil.jar拷贝到Tomcat目录下common\lib目录下,之后,修改环境变量中的CLASSPATH,把SQL
2000
For
JDBC
驱动程序安装目录下的D:
\SQLDriverForJDBC\lib\msbase.jar;
D:
\SQLDriverForJDBC\lib\mssqlserver.jar;
\SQLDriverForJDBC\msutil.jar;
追加到CLASSPATH中去。
必须重新启动Tomcat!
这样做的目的是,jsp页面在编译过程中不会出现找不到sql server driver类库的问题。
写一个简单的用来测试连接SQL Server 2000的JSP代码
<
%@ page import="
java.lang.*, java.io.*, java.sql.*, java.util.*"
contentType="
text/html;
charset=gb2312"
%>
html>
body>
% Class.forName("
com.microsoft.jdbc.sqlserver.SQLServerDriver"
).newInstance();
String url="
jdbc:
microsoft:
sqlserver:
1433;
DatabaseName=pubs"
//pubs 为你的数据库的
String user="
sa"
String password="
admin"
Statement
stmt;
Connection conn= DriverManager.getConnection(url,user,password);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="
select job_id,job_desc from jobs"
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) { %>
您的第一个字段内容为:
%=rs.getString
(1)%>
br>
您的第二个字段内容为:
%=rs.getString
(2)%>
% } %>
% out.print("
数据库操作成功,恭喜你"
% rs.close();
stmt.close();
conn.close();
%>
/body>
/html>
将上面的JSP代码保存为sql_test.jsp,放在/Root目录下。
Servlet/JSP配置详解
首先下载驱动程序:
然后就是安装JDK,我是把它装到从c:
\JDK目录下面。
然后设置CLASSPATH的问题了:
正如操作系统利用PATH来搜索可执行程序一样,Java运行环境也会遍历CLASSPATH来查找类,即便是HelloWorld这样简单的程序,JVM也会遍历CLASSPATH定义的每一个路径,直到找到相应的文件为止。
相信大家用的系统不是2k就是XP,然后就应当如下设置Path:
我的电脑->属性->高级->环境变量
然后在环境变量的Path后面追加:
C:
\JDK\bin;
.;
\JDK\lib
也可以这样配置:
\JDK\lib\dt.jar;
\JDK\lib\tools.jar
★记住:
环境变量中的
.
切记不能少,它表示当前路径,如果少掉出现的错误等会就说!
dt.jar是关于运行环境的类库,tools.jar是关于一些工具的类库
如果没有配置:
\JDK\bin,则会出现
“
javac’
不是内部或外部命令,也不是可运行的程序或批处理文件。
”这样的错误。
下面我们就写一个示例程序:
打开Editplus,新建一个Java文件,请照着如下输入,要一字不漏,并且分清大小写:
HelloWorld{
main(String[]
args){
Hello,World!
"
}
然后把这个文件保存(ctrl
+
s)到HelloWorld.java,Java是分大小写的,所以大小写一定要分清,是HelloWorld.java不是helloworld.java或者其他。
运行:
开始->运行->cmd
在控制台中把目录切换到当前目录:
HelloWorld.java
HelloWorld
你就会在控制台上看见输出的Hello,World!
javac是编译命令,它把HelloWorld.java编译成HelloWorld.class
java就是解释命令,JVM把HelloWorld.class解释执行.
在这个时候:
1、如果出现Exception
in
thread
main"
java.lang.NoClassDefFoundError:
那就是你在环境变量中没有加上那个.(dot)
2、如果出现Exception
java.lang.NoSuchMethodError:
main
或者HelloWorld.java:
1:
Public
helloworld
must
be
defined
file
called
HelloWorld.java"
那就是你没有分清大小写的写入这个HelloWorld,或者保存得时候没有保存为HelloWorld.java。
这个名字一定要跟public
class的名字一样
对于环境变量的问题就说到这里,下面我先所说怎么在Editplus里面编译和运行,在Tools->参数设置->配置用户工具
1.添加工具(添加应用程序)
菜单文字:
Compile
Java
Program
程序:
\JDK\bin\javac.exe
参数:
文件名称
初始目录:
文件目录
2.添加工具(添加应用程序)
Run
\JDK\bin\java.exe
文件名称(不含扩展名)
工具组名称可以随便添,比如Debug
Program。
然后在Tools的下拉菜单中,你就会看见Compile
Program以及Run
Program这两个选项,以后你就可以利用ctrl
1编译和ctrl
+2运行程序了
下面我们讨论Servlet的运行环境:
要运行Servlet,则需要JSP/Servlet
container,我用Tomcat。
//cvs.apache.org/builds/jakarta-tomcat-5/nightly/jakarta-tomcat-5-bin-20030725.zip
然后把这个压缩包解压到:
C:
\Tomcat
然后再配置环境变量;
添加三个系统变量:
JAVA_HOME:
\JDK
TOMCAT_HOME:
CLASSPATH:
%JAVA_HOME%\lib;
%TOMCAT_HOME%\lib
Tomcat的环境变量就配置完毕了,下面检验Tomcat是否能够运行:
在控制台中转到C:
\Tomcat\bin这个目录,运行startup,然后回出现一个窗口,连跳一大串东西,最后表示Server已经运行。
在浏览器中输入http:
8080,出现欢迎界面,则表示Tomcat没问题了。
然后和上面一样,写入你的第一个Servlet。
import
java.io.*;
javax.servlet.*;
javax.servlet.http.*;
HelloWorld
extends
HttpServlet
{
doGet(HttpServletRequest
request,HttpServletResponse
response)throws
ServletException,IOException
response.setContentType("
text/html"
PrintWriter
out
=
response.getWriter();
<html><head><title>"
my
first
Servlet"
</title></head><body>"
<h1>Hello,World!
</h1>"
</body></html>"
然后照样用javac
HelloWorld.java来编译这个文件,如果出现无法import
javax.servlet.*
那么就是应该把C:
\Tomcat\common\lib里面的servlet.jar文件拷贝到C:
\JDK\jre\lib\ext中,再次编译,就没有问题了!
然后在Tomcat目录里面的C:
\Tomcat\webapps\ROOT里面按如下的文件结构:
ROOT\index.html
ROOT\welcom.jsp
ROOT\WEB-INF\lib\MyServlet.jar(如果你的servlet的.class打成了.jar文件,则放在lib下面)
ROOT\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld