文档库 最新最全的文档下载
当前位置:文档库 › JSP和Serverlet之间的传值方法

JSP和Serverlet之间的传值方法

JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP。
通过对象 request和 session (不考虑 application)完成传值。

一、JSP -> servlet
JSP页面有3种方法向 servlet传值: form表单、URL 、其他

<!-- JSP page -->
...
<%......
session.setAttribute("testSession","Hello session");
reqeust.setAttribute("testRequest","Hello request");
%>
<a href="JspServlet?action=toServlet">click me</a>
<form action="JspServlet?action=toServlet" method="post" name="form">
<input name="username" type="test" />
<input type="submit" value="submit">
</form>
...

1、对于该JSP页面 form表单的内容,如 <input>标签,在 servlet可用 request.getParameter("username");获取。
2、URL:比如这里的 <a>标签的 href属性与 <form>标签的 action属性的值 "JspServlet?action=toServlet",在 servlet同样用 request.getParameter("action")获取;所要注意的是这里的 url 要和 servlet在web.xml里的 <url-pattern>标签的路径所对应。这部分后面会提到。
3、java片段代码,servlet只能接到 session.setAttribute("testSession","Hello session")的内容,而接不到 request的内容。在 servlet里用 request.getSession().getAttribute("testSession")获取 session内容。

二、Servlet
1、关于 servlet,首先要提到它在 web.xml里的注册内容,如

<servlet-name>JspServlet1</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet1</servlet-name>
<url-pattern>/JspServlet</url-pattern>
</servlet-mapping>

<servlet-name>JspServlet2</servlet-name>
<servlet-class>com.demo.JspServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>JspServlet2</servlet-name>
<url-pattern>/admin/JspServlet</url-pattern>
</servlet-mapping>
假如 project name 是 jsp2servlet,则该 project根目录的 Context是 /jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/;
在 project 根目录下有 admin目录,对应的 Context是/admin/jsp2servlet,在地址栏里显示是 http://localhost:8080/jsp2servlet/admin,
在这两个目录下的 jsp 都想转到 com.demo.JspServletDemo类做处理,这时的 url需要在 web.xml注册两次。
1)在 http://localhost:8080/jsp2servlet/ 目录下的 jsp 页面 JspServlet1,url应写为 "JspServlet"
2)在 http://localhost:8080/jsp2servlet/admin/ 目录下的 jsp 页面访问 JspServlet2,url应写为 "admin/JspServlet"

2、在 servlet直接

用 request对象,得到发送来的请求内容;用 request.getSession(),得到 session对象,从而得到会话内容。

这里的 request.getSession()的参数为 boolean 类型,该方法意思可理解为:

session可以认为是每一个IE进程对应一个会话(新开一个IE进程就可以对应两个会话的),getSessi
on都是返回当前用户的会话对象,参数的区别在于:
参数为true (默认),则如果“当前用户的会话对象”为空(第一次访问时)则创建一个新的会话对象返回;
参数为false,则如果“当前用户的会话对象”为空,则返回 null (即不自动创建会话对象)。

利用这个方法可以判断 session是否过期,如下:

if(request.getSession(false)==null)
System.out.println("Session has been invalidated!");
else
System.out.println("Session is active!");三、Servlet -> JSP
从 servlet转到 jsp不外乎两种方法,重定向 和 url转发

1、重定向 ( Redirect):是路径的跳转,内容和 url都改变。不允许带 request参数( session参数可以),即不允许在 servlet里给 request对象使用setAttribute方法传给下一页面。在 servlet里使用 response.sendRedirect(url) 方法。注意这里的 url前不带斜线 /,如 response.sendRedirect(”test.jsp“)

2、url转发 ( Forward):是页面的跳转,页面内容发生改变,url不变。可以带 request和 session参数。在 servlet里使用 getServletConfig().getServletContext().getRequestDispatcher(url).forward(request, response)。而这里的 url前需要带斜线 /,如getServletConfig().getServletContext().getRequestDispatcher(”/test.jsp“).forward(request, response)




1) redirect方式
request和response没有传给目标页面
response.sendRedirect("/a.jsp");
页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:
response.sendRedirect("URL");
1) redirect方式
request和response没有传给目标页面
response.sendRedirect("/a.jsp");
页面的路径是相对路径。sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:
response.sendRedirect("URL");跳转后浏览器地址栏变化。
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。
传值:HttpSession session = request.getSession();
session.setAttribute("bbbb", 1111111111);
取值:session.getAttribute("bbbb");
传值:RequestDispatcher rd = application.getRequestDispatcher("/queryResult.jsp?a="+000);
取值:request.getParameter("a")
2) forward方式
ServletContext application = this.getServletContext();//this是这个页面
RequestDispatcher rd = application.getRequestDispatcher("/目标页

面");
rd.forward(request, response);
Servlet页面跳转的路径是相对路径。forward方式只能跳转到本web应用中的页面上,跳转后浏览器地址栏不会变化。
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute
传值:request.setAttribute("a", 00);
取值:request.getAttribute("a");
传值:HttpSession session = request.getSession();
s
ession.setAttribute("bbbb", 1111111111);
取值:session.getAttribute("bbbb");
传值:RequestDispatcher rd = application.getRequestDispatcher("/queryResult.jsp?a="+000);
取值:request.getParameter("a");
getParameter只能传递字符串setAttribute/getAttribute可以传递对象
其次getParameter方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。
只能是页面发送到后台或者Web客户端传到Web服务器端




如何正确理解servlet?

servlet的基本概念

一、Servlet的结构

在具体掌握servlet之前,须对Java语言有所了解。我们假设读者已经具备一定的Java基础。在Servlet API中最重要的是Servlet接口(interface),所有的servlets都必须实现该接口,途径有很多:一是直接实现该接口,二是通过扩展类(class)来实现,如 HttpServlet。 这个Servlet接口提供了servlet与客户端联系的方法。Servlet编写者可以在他们开发 servlet程序时提供更多一些或所有的这样方法。

当一个servlet接收来自客户端的调用请求, 它接收两个对象:一个是ServletRequest,另外一个是ServletResponse。这个ServletRequest类概括从客户端到服务器之间的联系,而 ServletResponse类概括从servlet返回客户端的联系。

ServletRequest接口可以获取到这样一些信息,如由客户端传送的阐述名称,客户端正在使用的协议,产生请求并且接收请求的服务器远端主机名。它也提供获取数据流的ServletInputStream, 这些数据是客户端引用中使用HTTP POST 和 PUT 方法递交的。一个ServletRequest的子类可以让servlet获取更多的协议特性数据。例如:HttpServletRequest 包含获取 HTTP-specific头部信息的方法。

ServletResponse接口给出相应客户端的servlet方法。它允许servlet设置内容长度和回应的mime类型,并且提供输出流ServletOutputStream,通过编写者可以发回相应的数据。ServletResponse子类可以给出更多protocol-specific内容的信息。 例如:HttpServletResponse 包含允许servlet 操作HTTP-specific头部信息的方法。

上面有关类和接口的描述,构成了一个基本的Servlet框架。HTTP servlets有一些附加的可以提供session-tracking capabilities的方法。servlet编写者可以利用这些API,在

有他人操作时维护servlet与客户端之间的状态。



作者:包路跃出处:Yesky责任编辑: [ 2002-04-23 16:33 ]
Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成......

--------------------------------------------------------------------------------


二、Servlet的接口

我们编写的Servlet ,一般从Javax包的HttpServlet类扩展而来,在HttpServlet中加入了一些附加的方法,这些方法可以被协
助处理HTTP 基本请求的HttpServlet类中的方法service自动地调用。这些方法有:

· doGet 用来处理HTTP的GET请求。

这个GET操作仅仅允许客户从HTTP server上取得(GET)资源。重载此方法的用户自动允许支持方法HEAD。这个GET操作被认为是安全的,没有任何的负面影响,对用户来说是很可靠的。比如,大多数的正规查询都没有副作用。打算改变存储数据的请求必须用其他的HTTP方法。这些方法也必须是个安全的操作。方法doGet的缺省实现将返回一个HTTP的BAD_REQUEST错误。

方法doGet的格式:
protected void doGet(HttpServletResquest request, HttpServletResponse response)
throws ServletException,IOException;

· doPost 用来处理HTTP的POST请求。

这个POST操作包含了在必须通过此servlet执行的请求中的数据。由于它不能立即取得资源,故对于那些涉及到安全性的用户来说,通过POST请求操作会有一些副作用。

方法doPost的缺省实现将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持POST操作必须在子类HttpServlet中实现(implement)此方法。

此方法的格式:

protected void doPost(HttpServletResquest request, HttpServletResponse response)
throws ServletException,IOException;

· doPut用来处理HTTP的PUT请求。

此PUT操作模拟通过FTP发送一个文件。对于那些涉及到安全性的用户来说,通过PUT请求操作也会有一些副作用。

此方法的格式:

protected void doPut(HttpServletResquest request,HttpServletResponse response)
throws ServletException,IOException;

· doDelete用来处理HTTP的DELETE请求。

此操作允许客户端请求一个从server移出的URL。对于那些涉及到安全性的用户来说,通过DELETE请求操作会有一些副作用。

方法doDelete的缺省实现将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持DELETE操作,必须在子类HttpServlet中实现(implement)此方法。

此方法的格式:

protected void doDelete (HttpServletResquest request, HttpServletResponse response)
throws ServletException,IOException;

· doHead 用来处理HTTP的HEAD请求



缺省地,它会在无条件的GET方法执行时运行,但是不返回任何数据到客户端。只返回包含内容信息的长度的header。由于用到GET操作,此方法应该是很安全的(没有副作用)也是可重复使用的。此方法的缺省实现(implement)自动地处理了HTTPDE的HEAD操作并且不需要通过一个子类实现(implement)。

此方法的格式:

protected void doHead (HttpServletResquest request,HttpServletResponse response)
throws ServletException,IOException;

· doOptions用来处
理HTTP的OPTIONS请求。

此操作自动地决定支持什么HTTP方法。比如说,如果读者创建HttpServlet的子类并重载方法doGet,然后方法doOptions会返回下面的header:

Allow:GET,HEAD,TRACE,OPTIONS

一般不需要重载方法doOptions。

此方法的格式:

protected void doOptions (HttpServletResquest request, HttpServletResponse response)
throws ServletException,IOException;

· doTrace用来处理HTTP的TRACE请求。

此方法的缺省实现产生一个包含所有在trace请求中的header的信息的应答(response)。在开发servlet时,多数情况下需要重载此方法。

此方法的格式:

protected void doTrace (HttpServletResquest request, HttpServletResponse response)
throws ServletException,IOException;

在开发以HTTP为基础的servlet中,Servlet开发者关心方法doGet和方法doPost即可。



作者:包路跃出处:Yesky责任编辑: [ 2002-04-23 16:33 ]
Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成......

--------------------------------------------------------------------------------


三、Servlet的生命周期

如果读者写过Java的小应用程序(Applet),那Servlet对你来说就不会太难,也许更为简单。因为Servlet不用考虑图形界面的应用。与小应用程序一样,Servlet也有一个生命周期。Servlet的生命周期是当服务器装载运行servlets:接收来自客户端的多个请求并且返回数据给客户端,然后再删除移开servlets。下面详细描述如下:

1.初始化时期
当一个服务器装载servlet时,它运行servlet的 init() 方法。
public void init(ServletConfig config) throws ServletException
{
super.init(); //一些初始化的操作,如数据库的连接
}

需要记住的是一定要在init()结束时调用super.init()。init()方法不能反复调用,一旦调用就是重装载servlet。直到服务器调用destroy方法卸载servlet后才能再调用。

2.Servlet的执行时期
在服务器装载初始化servlet后,servlet就能够处理客户端的请求,我们可以用 service 方法来实现。

每个客户端请求有它自己service方法:这些方法接收客户端请求,并且发回相应的响应。Servlets能同时运行多个service。这是很重要的,这样,service方法可以按一个thread-safe 样式编写。如:service方法更新servlet对象中的一个字段field,这个字段是可以同时存取的。假如某个服务器不能同时并发运行 service方法,也可以用SingleThreadModel 接口。这个接口保证不会有两个以上的线程(threads)并发运行。在Servlet执行期间其最多的应用是处理客户端的请求并产生一个网页。其代码如下:

PrintWriter out =
response.getWriter();
out.println("<html>");
out.println("<head><title>"# Servlet </title></head>");
out.println("<body>");
out.println("Hello World");
out.println("</body></html>");
out.close();


3.Servlet结束时期
Servlets一直运行到他们被服务器卸载。在结束的时候需要收回在init()方法中使用的资源,在Servlet中是通过destory()方法来实现的。
public void destroy()
{
//回收在init()中启用的资源,如关闭数据库的连接等。
}

JSP与servlet之间是怎样的关系?

JSP主要关注于HTML(或者XML)与Java代码的结合,以及加入其中的JSP标记。如果一个支持JSP的服务器遇到一个JSP页面,它首先查看该页面是否被编译成为一个servlet。由此可见,JSP被编译成servlet,即被转变为纯Java,然后被装载入服务器执行。当然,这一过程,根据不同的JSP引擎而略有不同。

JSP和servlet在应用上有什么区别

简单的说,SUN首先发展出SERVLET,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便。

后来SUN推出了类似于ASP的嵌套型的JSP,把JSP TAG嵌套到HTML语句中,这样,就大大简化和方便了网页的设计和修改。新型的网络语言如ASP,PHP都是嵌套型的。

从网络三层结构的角度看,一个网络项目最少分三层:data layer,business layer,,presentation layer。当然也可以更复杂。

SERVLET用来写business layer是很强大的,但是对于写presentation layer就很不方便。JSP则主要是为了方便写presentation layer而设计的。当然也可以写business layer。写惯了ASP,PHP,CGI的朋友,经常会不自觉的把presentation layer和business layer混在一起。比如把数据库处理信息放到JSP中,其实,它应该放在business layer中。

根据SUN自己的推荐,JSP中应该仅仅存放与presentation layer有关的部分,也就是说,只放输出HTML网页的部份。而所有的数据计算、数据分析、数

据库联结处理,统统是属于business layer,应该放在JAVA BEANS中。通过JSP调用JAVA BEANS,实现两层的整合。

实际上,微软前不久推出的DNA技术,简单说,就是ASP+COM/DCOM技术。与JSP+BEANS完全类似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通过调用,实现整合。

为什么要采用这些组件技术呢?因为单纯的ASP/JSP语言是非常低效率执行的,如果出现大量用户点击,纯SCRIPT语言很快就到达了他的功能上限,而组件技术就能大幅度提高功能上限,加快执行速度。

另外一方面,纯SCRIPT语言将presentation layer和business layer混在一起,造成修改不方
便,并且代码不能重复利用。如果想修改一个地方,经常会牵涉到十几页CODE,采用组件技术就只改组件就可以了。

综上所述,SERVLET是一个不完善的产品,写business layer很好,写presentation layer就很逊色许多了,并且两层混杂。所以,推出JSP+BAEN,用JSP写presentation layer,用BAEN写business layer。SUN自己的意思也是将来用JSP替代SERVLET。

所以,学了JSP,不会用JAVA BEAN并进行整合,等于没学。




作者:包路跃出处:Yesky责任编辑: [ 2002-04-23 16:33 ]
Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成......

--------------------------------------------------------------------------------


如何调用servlet?

要调用Servlet或Web应用程序,请使用下列任一种方法:由URL调用、在<FORM>标记中调用、在<SERVLET>标记中调用、在ASP文件中调用。

1.由URL调用 Servlet

这里有两种用Servlet的URL从浏览器中调用该Servlet的方法:

(1)指定 Servlet 名称:当用 WebSphere应用服务器管理器来将一个Servlet实例添加(注册)到服务器配置中时,必须指定"Servlet 名称"参数的值。例如,可以指定将hi作为HelloWorldServlet的Servlet名称。要调用该Servlet,需打开https://www.wendangku.net/doc/d97894516.html,/servlet/hi。也可以指定Servlet和类使用同一名称(HelloWorldServlet)。在这种情况下,将由https://www.wendangku.net/doc/d97894516.html,/servlet/ HelloWorldServlet 来调用Servlet的实例。

(2)指定 Servlet 别名:用 WebSphere应用服务器 管理器来配置Servlet别名,该别名是用于调用Servlet的快捷URL。快捷URL中不包括Servlet名称。

2.在<FORM>标记中指定Servlet

可以在<FORM>标记中调用Servlet。HTM 格式使用户能在Web页面(即从浏览器)上输入数据,并向Servlet提交数据。例如:



<FORM METHOD="GET" ACTION="/servlet/myservlet">
<OL>
<INPUT TYPE="radio" N

AME="broadcast" VALUE="am">AM<BR>
<INPUT TYPE="radio" NAME="broadcast" VALUE="fm">FM<BR>
</OL>
(用于放置文本输入区域的标记、按钮和其它的提示符。)
</FORM>

ACTION特性表明了用于调用Servlet的URL。关于METHOD的特性,如果用户输入的信息是通过GET方法向Servlet提交的,则 Servlet 必须优先使用doGet()方法。反之,如果用户输入的信息是通过POST方法向Servlet提交的,则 Servlet 必须优先使用doPost()方法。使用GET方法时,用户提供的信息是查询字符串表示的URL编码。无需对URL进行编码,因为这是由表单完成的。然后URL编码的查询字符串被附加到Servlet URL中,则整个URL提交完成。URL编码的查询字符串将根据用户同可视部件之间的交互操作,将用
户所选的值同可视部件的名称进行配对。例如,考虑前面的HTML代码段将用于显示按钮(标记为AM和FM),如果用户选择FM按钮,则查询字符串将包含name=value的配对操作为broadcast=fm。因为在这种情况下,Servlet将响应HTTP请求,因此Servlet应基于HttpServlet类。Servlet 应根据提交给它的查询字符串中的用户信息使用的 GET 或 POST 方法,而相应地使用 doGet() 或 doPost() 方法。

3.在<SERVLET>标记中指定Servlet

当使用<SERVLET>标记来调用Servlet时,如同使用<FORM>标记一样,无需创建一个完整的HTML页面。作为替代,Servlet的输出仅是HTML页面的一部分,且被动态嵌入到原始HTML页面中的其它静态文本中。所有这些都发生在服务器上,且发送给用户的仅是结果HTML页面。建议在Java服务器页面(JSP)文件中使用 <SERVLET> 标记。

原始HTML页面中包含<SERVLET> 和</SERVLET> 标记。Servlet将在这两个标记中被调用,且Servlet的响应将覆盖这两个标记间的所有东西和标记本身。如果用户的浏览器可以看到HTML源文件,则用户将看不到<SERVLET>和</SERVLET>标记。要在 Domino Go Webserver 上使用该方法,请启用服务器上的服务器端包括功能。部分启用过程将会涉及到添加特殊文件类型SHTML。当Web服务器接收到一个扩展名为SHTML的Web页面请求时,它将搜索 <SERVLET> 和 </SERVLET> 标记。对于所有支持的Web服务器,WebSphere应用服务器将处理SERVLET标记间的所有信息。下列 HTML 代码段显示了如何使用该技术。

<SERVLET NAME="myservlet" CODE="myservlet.class" CODEBASE="url" initparm1= "value">
<PARAM NAME="parm1" VALUE="value">
</SERVLET>

使用NAME和CODE属性带来了使用上的灵活性。可以只使用其中一个属性,也可以同时

使用两个属性。NAME属性指定了Servlet的名称(使用WebSphere应用服务器管理器配置的),或不带.class扩展名的Servlet类名。CODE属性指定了Servlet类名。使用WebSphere应用服务器时,建议指定NAME和CODE,或当NAME指定了Servlet名称时,仅指定NAME。如果仅指定了CODE,则会创建一个NAME=CODE的Servlet实例。装入的Servlet将假设Servlet名称与NAME属性中指定的名称匹配。然后,其它SHTML文件可以成功地使用NAME属性来指定Servlet的名称,并调用已装入的Servlet。NAME的值可以直接在要调用Servlet的URL中使用。如果NAME和CODE都存在,且NAME指定了一个现有Servlet,则通常使用NAME中指定的Servlet。由于Servlet创建了部分HTML文件,所以当创建Servlet时,将可能会使用HttpServlet的一个子类,并优先使用doGet()方法(因为GET方法是提供信息给Servlet的缺省方法)。另一个选项是优先使用service()方法。另外,CODEBASE是
可选的,它指定了装入Servlet的远程系统的URL。请使用WebSphere应用服务器管理器来从JAR文件配置远程Servlet装入系统。

在上述的标记示例中,initparm1是初始化参数名,value是该参数的值。可以指定多个"名称-值"对的集合。利用ServletConfig对象(被传递到Servlet的init()方法中)的getInitParameterNames()和getInitParameter()方法来查找参数名和参数值的字符串数组。在示例中,parm1是参数名,并在初始化Servlet后被才被设置某个值。因为只能通过使用"请求"对象的方法来使用以<PARAM>标记设置的参数,所以服务器必须调用Servlet service()方法,以从用户处传递请求。要获得有关用户的请求信息,请使用getParameterNames()、getParameter()和getParameterValues()方法。

初始化参数是持续的。假设一台客户机通过调用一个包含某些初始化参数的SHTML文件来调用Servlet。并假设第二台客户机通过调用第二个SHTML文件来调用同一个Servlet,且该SHTML中未指定任何初始化参数。那么第一次调用Servlet时所设置的初始化参数将一直可用,并且通过所有其它SHTML文件而调用的所有后继Servlet都不会更改该参数。直到Servlet调用了destroy()方法后,才能重新设置初始化参数。例如,如果另一个SHTML文件指定了另一个不同的初始化参数值,虽然已此时已装入了Servlet,但该值仍将被忽略。

4.在ASP文件中调用Servlet
如果在Microsoft Internet Information Server(IIS)上有遗留的ASP文件,并且无法将ASP文件移植成JSP文件时,可用ASP文件来调用Servlet。在WebSphere应用服务器中的ASP支持包括一个用于嵌入Servlet的ActiveX控制,下面介绍ActiveX控制AspToServlet的方法和属性。

该方法说明如

下:

(1)String ExecServletToString(String servletName);执行ServletName,并将其输出返回到一个字符串中。

(2)ExecServlet(String servletName);执行ServletName,并将其输出直接发送至 HTML 页面。

(3)String VarValue(String varName);获得一预置变量值(其它格式)。

(4)VarValue(String varName, String newVal);设置变量值。变量占据的总大小应小于0.5个千字节(Kbyte)。且仅对配置文件使用这些变量。

其属性如下:

= Boolean WriteHeaders;若该属性为真,则Servlet提供的标题被写入用户处。缺省值为假。
= Boolean OnTest;若该属性为真,服务器会将消息记录到生成的HTML页面中。缺省值为假。
下列ASP 脚本示例是以Microsoft Visual Basic Scripting(VBScript)书写的。

<%
' Small sample asp file to show the capabilities of the servlets and the ASP GateWay ...
%>
<H1> Starting the ASP->Java Servlet demo</H1>
<%
' Create a Se
rvlet gateway object and initialize it ...
Set Javaasp = Server.CreateObject("AspToServlet.AspToServlet")
' Setting these properties is only for the sake of demo.
' These are the default values ...
Javaasp.OnTest = False
Javaasp.WriteHeaders = False
' Add several variables ...
Javaasp.VarValue("gal") = "lag"
Javaasp.VarValue("pico")= "ocip"
Javaasp.VarValue("tal") = "lat"
Javaasp.VarValue("paz") = "zap"
Javaasp.VarValue("variable name with spaces") = "variable value with spaces"
%>
<BR>
Lets check the variables
<%
Response.Write("variable gal = ")
Response.Write(Javaasp.VarValue("gal"))
%>
<BR>
<%
Response.Write("variable pico = " & Javaasp.VarValue("pico"))
%>
<BR>
<HR>
<%
galout = Javaasp.ExecServletToString("SnoopServlet")
If Javaasp.WriteHeaders = True Then
%>
Headers were written <%
Else
%>
Headers were not written <%
End If
Response.Write(galout)
%>
<H1> The End ...</H1>





作者:包路跃出处:Yesky责任编辑: [ 2002-04-23 16:33 ]
Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成......

--------------------------------------------------------------------------------

如何设置servlet类的路径?

因为各个服务器对访问servlet的策略不尽相同,所以在设置servlet类路径时应该视情况而定。
对于开发中的servlet,只需确认包含Javax.servlet 的JAR文档在您的类路径中,并运用如Javac的普通开发工具。
对于 JSDK:JSDK_HOME/servlet.jar
JSDK_HOME/se

rver.jar
对于 Tomcat:TOMCAT_HOME/lib/servlet.jar
对于运行中的servlet,必须为servlet引擎设置类路径,这根据不同的引擎,有不同的配置,如哪些库和目录应包括,哪些不应包括。注:对于servlet的动态加载引擎如JRun, Apache Jserv, Tomcat,包含servlet类文件的目录不应在类路径中,而应在config文件中配置。否则,servlet可以运行,但不能被动态再加载。

Servlet 2.2 规范认为以下应被容器自动包括,因此您不必把他们手工添加到类路径。

· 所有的类应放在 webapp/WEB-INF/classes目录下

· 所有JAR文件放在webapp/WEB-INF/lib 目录下

· 对webapps的应用体现在文档系统中,对已打包进JAR文档的webapps的应用应放入容器的webapps目录。(例如,TOMCAT_HOME/webapps/myapp.jar)

另外,由Gene McKenna(mckenna@https://www.wendangku.net/doc/d97894516.html,)撰写的"The Complete CLASSPATH Guide for Servlets"详细叙述了如何为JavaWebServer和Jrun设置类路径。




相关文档
相关文档 最新文档