`

运行Servlet

阅读更多
      当一个servlet已经写好怎样来运行测试呢?但其实现在想想也不是很难。我想通过一个例子详细的说说,这样会有一个感性的把握。我会把我当时遇到的主要问题用黑体字写出,那时我当时主要浪费时间的地方,希

       望大家也注意。(我用的运行环境是Tomcat5.0)
      首先我们来写一个最简单的servlet:
package test;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");

PrintWriter out=response.getWriter();
out.println("<HTML>");
out.println("<BODY>");
out.println("<p>Hello!这是我的第一个Java Servlet程序。</p>");
out.println("</BODY>");
out.println("</HTML>");
}
}
由于我们把它进行了打包,所以把这个编译好的.class文件放到\Tomcat文件夹

\webapps\ourappfiles\WEB-INF\classes\test的文件夹下。
接着我们需要写一个调用该Servlet的html文件:
<html>
<head>
<title>Java Servlets Sample-Properties</title>
</head>
<body>
<form method="get" action="test.HelloServlet">
<input name="test" type="submit" value="Test HelloServlet servlet">
</body>
</html>
     注意:这里的method不能用post,不然不会在IE中正常显示,我当初就是在这个地方没有弄好,浪费了好多时间。至于为什么这样写,我也弄不太清楚,由于水平有限,多多包涵
。 现在我们还差最后一步,编写我们的web.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application

2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd";>
<web-app>
<servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>test.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloservlet</servlet-name>
<url-pattern>/test.HelloServlet</url-pattern>
</servlet-mapping>
</web-app>

      把编写好的web.xml文件放到\Tomcat文件夹\webapps\ourappfiles\WEB-INF下。 好了,现在万事俱备,就差启动Tomcat运行我们的Servlet了。
以上就是运行Servlet的几个步骤。

附录二

1.ServletConfig
      一个ServletConfig对象是servlet container在servlet initialization的时候传递给servlet的。
ServletConfig包涵 ServletContext 和 一些 Name/Value pair
     ServletContext接口封装了Web应用程序的上下文概念。

2.会话跟踪
(1) Session
      当一个Client请求多个Servlets时,一个session可以被多个servlet共享。
       通常情况下,如果server detect到browser支持cookie,那么URL就不会重写。
(2) cookie
      在Java Servlet中,如果你光 Cookie cookie = new Cookie(name,value)
那么当用户退出Browser时,cookie会被删除掉,而不会被存储在客户端的硬盘上。
如果要存储 cookie,需加一句 cookie.setMaxAge(200)

      cookie是跟某一个server相关的,运行在同一个server上的servlet共享一个cookie.

(3) URL Rewriting

      在使用URL Rewriting来维护Session ID的时候,每一次HTTP请求都需要EncodeURL() 典型的用在两个地方
       (1) out.print(“form action=\” ”);
out.print(response.encodeURL(“sessionExample”));
out.print(“form action=\” ”);
out.print(“method = GET>”);
      (2) out.print(“<p><a href=\” ”);
out.print(response.encodeURL(“SessionExample?database=foo&datavalue=bar”));
out.println(“\” >URL encoded </a>”);

3.SingleThreadModel
默认的,每一个servlet definition in a container只有一个servlet class的实例。 只有实现了SingleThreadModel,container才会让servlet有多个实例。
Servlet specification上建议,不要使用synchronized,而使用SingleThreadModel。

SingleThreadModel(没有方法)
保证servlet在同一时刻只处理一个客户的请求。
SingleThreadModel是耗费资源的,特别是当有大量的请求发送给Servlet时,

SingleThreadModel的作用是使包容器以同步时钟的方式调用service方法。
这等同于在servlet的service()方法种使用synchronized.

Single Thread Model一般使用在需要响应一个heavy request的时候,比如是一个需要和

数据库打交道的连接。


2. 在重载Servlet地init( )方法后,一定要记得调用super.init( );

3. the client通过发送一个blank line表示它已经结束request
而the server通过关闭the socket来表示response已结束了。

4. 一个Http Servlet可以送三种东西给Client
1) a single status code
2) any number of http headers
3) a response body

5. Servlet之间信息共享的一个最简单的方法就是
System.getProperties().put(“key”,”value”);

6. Post和Get
Post:将form内各字段名称和内容放置在html header内传送给server
Get: ?之后的查询字符串要使用URLEncode,经过URLEncode后,这个字符串不再带有空格

,以后将在server上恢复所带有的空格。

Get是Web上最经常使用的一种请求方法,每个超链接都使用这种方法。

7. Web.xml就是Web Applicatin 的deployment descriptor
作用有:组织各类元素
设置init param
设置安全性

8. Request Dispatcher用来把接收到的request forward processing到另一个servlet
要在一个response里包含另一个servlet的output时,也要用到Request Dispatcher.

9. Servlet和Jsp在同一个JVM中,可以通过ServeltContext的
setAttribute( )
getAttribute( )
removeAttribute( )
来共享对象
10. 利用request.getParameter( )得到的String存在字符集问题。
可以用 strTitle = request.getParameter(“title”);
strTitle = new String(strTitle.getBytes(“8859-1”),”gb2312”);

如果你希望得到更大得兼容性
String encoding = response.getCharacterEncoding(); //确定Application server用

什么编码来读取输入的。
strTitle = new String(strTitle.getBytes(encoding),”gb2312”);
       而jsp页面是由web服务器负责解析的,你每次改了jsp页面以后是要保存后刷新的,而刷新的作用就是告诉web服务器重新解析,只有在web服务器启动的时候才可以解析!!,但与是否重启服务器无关,因为就算你重启服务器,它解析jsp的方式也是那样,是实现好了的,不
会改变!你只要用他解析jsp也就好了. 以上理解为要用新的只要重新解析!! 最好的理解方式是什么呢?? 你可以把jsp页面的"保存"对等与Servlet的加载,因为保存后在你不修改以前不发生变化 而加载后在你不重启服务器以前不发生变化 但是我的在我的印象中是不管使用什么服务器都是这个原理,也就是与服务器无关!!!
分享到:
评论

相关推荐

    如何运行servlet(第一个servlet).doc

    我学习配置的第一个servlet,方便了初学者

    shell 脚本命令行下编译运行servlet

    用shell写的脚本,用于java web开发时,自动编译运行servlet,速度极快,免除了eclipse慢且不过更新代码和资源的问题。脚本中的路径请自行替换为自己的

    运行servlet的两种方法.ppt

    运行servlet的两种方法.ppt

    如何运行Servlet程序

    servlet运行方法,servlet开发过程

    如何编译运行servlet

    NULL 博文链接:https://andrewstz.iteye.com/blog/1668372

    tomcat启动服务运行servlet

    NULL 博文链接:https://hbiao68.iteye.com/blog/1570415

    java-servlet-api.doc

    Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。 javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。 Servlet的解析和载入 Servlet引擎解析并...

    JDK - Tomcat - JSP - Servlet 配置运行全攻略

    JDK - Tomcat - JSP - Servlet 配置运行全攻略

    servlet的系统学习资料

    servlet的学习资料 1. C/S与B/S C/S叫做客户端服务器,要想运行此类程序,必须在客户端与服务器端分别安装程序。 好处:运行速度快,一般程序较简单,典型程序...Tomcat是运行Servlet与JSP的一种软件。 Tomcat文件目录

    Servlet运行原理图

    Servlet运行原理图,描述servlet运行的步骤方向和servlet运行过程

    Servlet的运行机制

    3. 使用代码以及文字,说明Servlet的运行机制和生命周期 4. 实现用Servlet实现伪静态页面的访问 5. 实现用缺省的Servlet实现对静态页面的访问。 6. 使用ServletConfig对象,访问web.xml中的数据库连接信息。 7. 使用...

    servlet运行原理

    servlet的概念和运行原理,包含servlet中web.xml的配置,servlet api的结构,jsp和servlet的关系

    Head First Servlet JSP(清晰中文版).part2

    Servlet揭秘:编写、部署和运行Servlet 如果在HTTL中引入Java,JSP则应运而生 2 Web应用体系结构:高层概述 考试要求 什么是容器,容器能带给你什么? 代码里有什么 命名servlet,使用DD将Servlet映射到URL ...

    Head First Servlet JSP(清晰中文版).part3

    Servlet揭秘:编写、部署和运行Servlet 如果在HTTL中引入Java,JSP则应运而生 2 Web应用体系结构:高层概述 考试要求 什么是容器,容器能带给你什么? 代码里有什么 命名servlet,使用DD将Servlet映射到URL ...

    Head First Servlet JSP(清晰中文版).part1

    Servlet揭秘:编写、部署和运行Servlet 如果在HTTL中引入Java,JSP则应运而生 2 Web应用体系结构:高层概述 考试要求 什么是容器,容器能带给你什么? 代码里有什么 命名servlet,使用DD将Servlet映射到URL ...

    Head First Servlet JSP(清晰中文版).part4

    Servlet揭秘:编写、部署和运行Servlet 如果在HTTL中引入Java,JSP则应运而生 2 Web应用体系结构:高层概述 考试要求 什么是容器,容器能带给你什么? 代码里有什么 命名servlet,使用DD将Servlet映射到URL ...

    Servlet JSP开发运行环境配置

    Servlet JSP开发运行环境配置.docServlet JSP开发运行环境配置.docServlet JSP开发运行环境配置.doc

    手把手教你在Linux环境下安装运行JSPservlet

    Linux环境下安装运行JSPservlet

    servlet 8个最基础demo

    servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等...

Global site tag (gtag.js) - Google Analytics