Servlet简介

 

servlet简介

servlet容器:

负责处理客户请求、把请求传送给servlet并把结果返回给客户。不同程序的容器实际实现可能有所变化,但容器与servlet之间的接口是由servletAPI定义好的,这个接口定义了servlet容器在servlet上要调用的方法及传递给servlet的对象类。

servlet的生命周期:

l         servlet容器创建servlet的一个实例

l         容器调用该实例的init()方法

l         如果容器对该servlet有请求,则调用此实例的service()方法

l         容器在销毁本实例前调用它的destroy()方法

l         销毁并标记该实例以供作为垃圾收集

一旦请求了一个servlet,就没有办法阻止容器执行一个完整的生命周期。

容器在servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理。容器可以决定在任何时候把这个实例从内存中移走。在典型的模型中,容器为每个servlet创建一个单独的实例,容器并不会每接到一个请求就创建一个新线程,而是使用一个线程池来动态的将线程分配给到来的请求,但是这从servlet的观点来看,效果和为每个请求创建一个新线程的效果相同。

servlet API

servlet接口

public interface Servlet

它的生命周期由javax.servlet.servlet接口定义。当你在写servlet的时候必须直接或间接的实现这个接口。一般趋向于间接实现:通过从javax.servlet.GenericServletjavax.servlet.http.HttpServlet派生。在实现servlet接口时必须实现它的五个方法:

init():

public void init(ServletConfig config) throws ServletException

一旦对servlet实例化后,容器就调用此方法。容器把一个ServletConfig对象传统给此方法,这样servlet的实例就可以把与容器相关的配置数据保存起来供以后使用。如果此方法没有正常结束就会抛出一个ServletException。一旦抛出该异常,servlet就不再执行,而随后对它的调用会导致容器对它重新载入并再次运行此方法。接口规定对任何servlet实例,此方法只能被调用一次,在任何请求传递给servlet之前,此方法可以在不抛出异常的情况下运行完毕。

service():

public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException

只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,后一个提供servlet构造响应的方法。

destroy():

public void destroy()

容器可以在任何时候终止servlet服务。容器调用此方法前必须给service()线程足够时间来结束执行,因此接口规定当service()正在执行时destroy()不被执行。

getServletConfig():

public ServletConfig getServletConfig()

servlet初始化时,容器传递进来一个ServletConfig对象并保存在servlet实例中,该对象允许访问两项内容:初始化参数和ServletContext对象,前者通常由容器在文件中指定,允许在运行时向sevrlet传递有关调度信息,后者为servlet提供有关容器的信息。此方法可以让servlet在任何时候获得该对象及配置信息。

getServletInfo():

public String getServletInfo()

此方法返回一个String对象,该对象包含servlet的信息,例如开发者、创建日期、描述信息等。该方法也可用于容器。

GenericServlet

Public abstract class GenericServlet implants Servlet,ServletConfig,Serializable

此类提供了servlet接口的基本实现部分,其service()方法被申明为abstract,因此需要被派生。init(ServletConfig conf)方法把servletConfig对象存储在一个private transient(私有临时)实例变量里,getServletConfig()方法返回指向本对象的指针,如果你重载此方法,将不能使用getServletConfig来获得ServletConfig对象,如果确实想重载,记住要包含对super.config的调用。2.1版的API提供一个重载的没有参数的init()方法。现在在init(ServletConfig)方法结束时有一个对init()的调用,尽管目前它是空的。2.1API里面,此类实现了ServletConfig接口,这使得开发者不用获得ServletConfig对象情况下直接调用ServletConfig的方法,这些方法是:getInitParameter(),getInitParameterNames(),getServletContext。此类还包含两个写日志的方法,它们实际上调用的是ServletContext上的对应方法。log(String msg)方法将servlet的名称和msg参数写到容器的日志中,log(String msg,Throwable cause)除了包含servlet外还包含一个异常。

HttpServlet

该类扩展了GenericServlet类并对servlet接口提供了与HTTP更相关的实现。

service():

protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException

public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException

该方法作为HTTP请求的分发器,这个方法在任何时候都不能被重载。当请求到来时,service()方法决定请求的类型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把请求分发给相应的处理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),doPut(),doTrace())每个do方法具有和第一个service()相同的形式。为了响应特定类型的HTTP请求,我们必须重载相应的do方法。如果servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。

getLatModified():

protected long getLastModified(HttpServletRequest req)

该方法返回以毫秒为单位的的自GMT时间197011000秒依赖的最近一次修改servlet的时间,缺省是返回一个负数表示时间未知。当处理GET请求时,调用此方法可以知道servlet的最近修改时间,服务器就可决定是否把结果从缓存中去掉。

HttpServletRequest接口

public interface HttpServletRequest extends ServletRequest

所有实现此接口的对象(例如从servlet容器传递的HTTP请求对象)都能让servlet通过自己的方法访问所有请求的数据。下面是一些用来获取表单数据的基本方法。

getParameter()

public String getParameter(String key)

此方法试图将根据查询串中的关键字定位对应的参数并返回其值。如果有多个值则返回列表中的第一个值。

getParameterValues():

public String[] getParameterValues(String key)

如果一个参数可以返回多个值,比如复选框集合,则可以用此方法获得对应参数的所有值。

GetParameterNames():

Public Enumeration getParameterNames()

此方法返回一个Enumeration对象,包含对应请求的所有参数名字列表。

HttpServletResponse接口

public interface HttpServletResponse extends servletResponse

servlet容器提供一个实现该接口的对象并通过service()方法将它传递给servlet。通过此对象及其方法,servlet可以修改响应头并返回结果。

setContentType():

public void setContentType(String type)

在给调用者发回响应前,必须用此方法来设置HTTP响应的MIME类型。可以是任何有效的MIME类型,当给浏览器返回HTML是就是”text/html”类型。

getWriter():

public PrintWriter getWriter()throws IOException

此方法将返回PrintWriter对象,把servlet的结果作为文本返回给调用者。PrintWriter对象自动把Java内部的UniCode编码字符转换成正确的编码以使客户端能够阅读。

getOutputStream():

public ServletOutputStream getOutputStream() throws IOException

此方法返回ServletOutputStream对象,它是java.io.OutputStream的一个子类。此对象向客户发送二进制数据。

setHeader():

public void setHeader(String name,String value)

此方法用来设置送回给客户的HTTP响应头。有一些快捷的方法用来改变某些常用的响应头,但有时也需要直接调用此方法。

编译条件

需要从http://java.sun.com/products/servlet/ 获得一份JSDK的拷贝,并把servlet.jar移动到JDK安装目录下的/jre/lib/ext目录下。如果是JDK1.1,则移动到/lib下,并在CLASSPATH中加入servlet.jar的绝对路径。

运行条件

需要Apache Jserv,Jrun Servlet Exec,Java Web Server,Weblogic,WebSphere,Tomcat,Resinservlet服务器端程序。

简单范例

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

 

public class HelloWorld extends HttpServlet {

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws IOException, ServletException

    {

        response.setContentType("text/html");

        PrintWriter out = response.getWriter();

        out.println("<html>");

        out.println("<body>");

        out.println("<head>");

        out.println("<title>Hello World!</title>");

        out.println("</head>");

        out.println("<body>");

        out.println("<h1>Hello World!</h1>");

        out.println("</body>");

        out.println("</html>");

    }

}

servlet的性能和效率

一个servlet仅被初始化一次而执行多次,因此极小的低效性也会随着时间的增加而产生很很大的影响。在代码中需要考虑String对象的使用,如果产生HTML响应需要用到很多字符串时,不应该为每一个字符串生成一个String对象,因为这会产生大量的StringStringBuffer对象,造成大量的对象构造消耗和垃圾收集负担,解决的办法是一行一行的把所有需要写入的直接写入PrintWriter中,或者创建一个StringBuffer对象,并使用append()方法将文本加入。

及时回送

有时,程序需要花费很长时间执行,在这种情况下应该回送给客户端一些信息,而不是长时间显示白屏,这可以在执行到一定程度就回送一些东西,可以使用PrintWriterflush()方法强制将现有的内容回送给浏览器。

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 员工绩效管理系统是一种能够及时、准确地收集、整理和分析员工绩效数据的系统。基于jsp servlet的员工绩效管理系统以实现科学、公正、合理、规范的员工绩效评价为目标,为企业提供一个可靠的管理工具,帮助企业更好地提升企业管理水平和员工绩效素质。 本系统由前端页面和后端后台数据库组成,采用JSP技术实现视图层,Servlet实现控制层,有效实现了界面和后端逻辑的分离,让系统更加容易维护和扩展。员工绩效管理系统的主要功能包括员工信息管理、绩效评价、工资管理、报表统计等。其中,员工信息管理包括新员工入职信息记录、员工基本信息查询、员工照片管理等;绩效评价模块包括工作计划制定、任务分解、绩效考评结果统计等;工资管理模块主要包括公式设置、工资单生成、工资查询等;最后,报表统计模块按照组织架构、个人考评等角度为企业人力资源管理者提供了客观、真实的数据。 角色权限设置是本系统的重点难点之一,特别是访问控制和审批流程设置需要根据企业的具体管理要求进行精细化定制。此外,本系统还可以与其他企业系统集成,例如人力资源管理软件、财务管理软件等,以实现人力资源全流程的数据自动化处理和信息沟通共享。 以上是基于jsp servlet的员工绩效管理系统的简介,本系统的建设对于企业的人力资源管理具有积极的意义和实际的价值,为企业的可持续发展提供了有力的支撑和保障。 ### 回答2: 员工绩效管理系统是一个基于jsp servlet开发的系统,旨在帮助企业高效地管理员工绩效,通过实时监控和分析员工工作情况,提升公司的生产力和竞争力。 该系统提供了多种功能,包括员工信息的收集和存储、绩效考核指标的设定、绩效评估、工资管理、统计分析等。系统管理员可以设定不同角色的用户权限,保证数据的安全性和准确性。 员工绩效管理系统的开发基于jsp servlet技术,这是一种基于Java语言的Web开发技术。通过JSP和Servlet的结合使用,可以快速且灵活地开发动态Web应用程序。此外,jsp servlet还具有较好的扩展性和可重用性,便于后续的升级和维护。 员工绩效管理系统的实现需要具备一定的技术和管理技能。首先,需要对企业员工绩效管理的流程和指标有一定的了解,以便在系统中进行合理的设定。其次,需要熟悉jsp servlet开发技术,能够灵活地运用其各种功能,实现系统的各项功能。最后,需要具备项目管理和团队协作的能力,使得系统开发进程高效及有序地实现。 总之,基于jsp servlet的员工绩效管理系统是一种高效、智能的工具,有助于企业提升管理水平,实现科学、有效的员工绩效管理。 ### 回答3: 基于JSP Servlet的员工绩效管理系统是一个通过Java技术开发的应用程序,它可以辅助企业管理人员对员工的绩效进行管理。传统上,人力资源管理系统通常需要复杂的客户端安装和额外的服务器开销。而基于JSP Servlet的员工绩效管理系统则为企业提供了一种更为轻便有效的解决方案。 这个员工绩效管理系统功能完善,包括以下主要模块: 1. 员工档案管理:该模块主要负责管理员工的基本信息,如工号、姓名、职位、部门、入职时间等。 2. 绩效考核管理:该模块主要负责员工的绩效考核,包括考核指标的设定、考核计划的制定、考核结果的统计和分析等。 3. 绩效报告管理:该模块主要负责员工绩效报告的管理,包括绩效报告的编写、审核、发布等。 4. 数据分析与报表:该模块主要负责通过数据分析和报表展示员工绩效情况,帮助企业管理人员更好地了解员工表现和工作效率。 可以看出,基于JSP Servlet的员工绩效管理系统是一款功能集成丰富的人力资源管理系统,它采用轻量级的Web技术,可通过浏览器访问,支持多用户同时使用。企业可以根据自身需求进行二次开发和定制,让员工绩效管理变得更加自主化、精确化和高效化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cherami

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值