Ⅰ java Servlet实例什么时候呗创建
如果你设置<load-on-startup>的值是一个大于0的数,则tomcat在启动时就会创建servlet,如果没有设置这个属性,则是第一次访问时创建
Ⅱ javaweb开发中有servlet,model,po,vo,,impl的属于什么框架
servlet:一般作控制器
model:数据库实体对象
PO(persistant object) 持久对象
在o/r
映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表
相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.
VO(value object) 值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已.但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递.
BO(business object) 业务对象
从业务模型的角度看,见UML元件领域模型中的领域对象.封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作.
POJO(plain ordinary java object)
简单无规则java对象
纯 的传统意义的java对象.就是说在一些Object/Relation
Mapping工具中,能够做到维护数据库表记录的persisent object完全是一个符合Java
Bean规范的纯Java对象,没有增加别的属性和方法.我的理解就是最基本的Java
Bean,只有属性字段及setter和getter方法!.
DAO(data access object)
数据访问对象
是sun的一个标准j2ee设计模式,这个模式中有个接口就是DAO,它负责持久层的操作.为业务层提供接口.此对象用于访问数据库.通常和PO结合使
用,DAO中包含了各种数据库的操作方法.通过它的方法,结合PO对数据库进行相关的操作.夹在业务逻辑与数据库资源中间.配合VO,
提供数据库的CRUD操作...
DTO (Data Transfer
Object)数据传输对象
主要用于远程调用等需要大量传输对象的地方。
比如我们一张表有100个字段,那么对应的PO就有100个属性。
但是我们界面上只要显示10个字段,
客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,
这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO
impl:接口的实现类
Ⅲ Java中的Servlet的定义,Servlet的具体用途
Servlet是一个实现了Servlet接口的类,一个与访问协议和平台无关的、运行在Servlet容器中的Java程序。
针对Servlet实现技术,SUN公司提供了一套标准的Java Servlet API以便于更快速、规范地开发Servlet程序。这套Servlet API中,最重要的两个软件包是:javax.servlet、javax.servlet.http。
javax.servlet是一个与通信协议无关的通用软件包;javax.servlet.http是一个支持HTTP访问协议的软件包,这两个软件包的同时存在,使得Servlet API能支持任何协议的请求/响应。
在javax.servle中,包含着一套常用接口,负责承担指定的任务。下表中列出了常用的类和接口:
javax.servlet软件包:
javax.servlet包中定义了与通信协议无关的接口和类。
常用接口:
RequestDispatcher、Servlet、ServletConfig、ServletContext、ServletRequest、ServletResponse。
常用类:
GenericServlet、ServletInputStream、ServletOutputStream。
1、RequestDispatcher接口
public interface RequestDispatcher;
资源调度器接口,用于定义一个在服务器内部直接实现资源转发的对象。
RequestDispatcher对象由Servlet容器创建,用于封装并调度由一个特定的URL定义的服务器资源。
(1)请求传递方法
public void forward(ServletRequest request,
ServletReponse response) throws ServletException,IOException
从一个Servlet向服务器上的另一个资源传递请求。
将请求转发给其他资源时,将由被调用的资源负责对请求作出响应,而原先Servlet的执行则终止。
public void include(ServletRequest request,
ServletResponse response) throws ServletException,IOException
从一个Servlet向服务器上的另一个资源传递请求。
将请求转发给其他资源时,被调用的Servlet对该请求作出的响应将并入原先的响应对象中,原先的Servlet还可以继续输出响应消息。
2、Servlet接口
public interface Servlet;
开发一个Servlet需要实现的基础接口。
接口中定义了5个方法:
init():Servlet初始化方法,通过init()方法可以获得容器创建的ServletConfig对象
service():请求处理方法
destroy():Servlet实例销毁方法
getServletConfig():获取ServletConfig配置对象方法
getServletInfo():获取Servlet相关信息方法
(1)初始化方法
public void init(ServletConfig config) throws ServletException
Servlet容器会在Servlet实例化之后,调用init方法对Servlet对象进行初始化,该方法由Servlet容器顺序调用,无需Servlet自身考虑何时执行。
(2)服务方法
public void service(ServletRequest request,
ServletResponse response) throws ServletException,IOException
当Servlet容器接收到客户请求时,调用service方法响应客户请求,service方法在Servlet实例化、初始化之后被调用,并且可以被多次调用。
(3)销毁方法
public void destroy()
当Servlet实例从服务器中移除或服务停止时,Servlet容器调用destroy方法销毁Servlet实例。
(4)获取Servlet配置对象方法
public ServletConfig getServletConfig()
获取一个由Servlet容器创建的ServletConfig配置对象,这个对象常常用在Servlet初始化方法中,将初始化参数封装在ServletConfig对象中,然后传递给Servlet。
(5)获取Servlet相关信息方法
public String getServletInfo()
获取关于Servlet的一些相关信息,返回的字符串是纯文本格式而不带有任何标记(例如:HTML、XML等)。
3、ServletConfig接口
public interface ServletConfig;
Servlet配置信息接口,在Servlet初始化时,Servlet容器将Servlet初始化参数封装在ServletConfig对象中,并传递给Servlet,一个Servlet实例只有一个ServletConfig对象。
接口中,只定义了4个方法:
getInitParameter():获取Servlet指定初始化参数的值
getInitParameterNames():获取Servlet所有初始化参数名称
getServletContext():获取Servlet容器为WEB应用创建的Servlet上下文环境对象ServletContext
getServletName():获取Servlet名称
(1)获取初始化参数方法
public String getInitParameter(String name)
根据初始化参数名称,获取Servlet指定初始化参数的值,如果指定的参数不存在,返回空值null。
public Enumeration getInitParameterNames()
获取Servlet所有初始化参数名称,如果Servlet没有初始化参数,返回一个空列表。
(2)获取Servlet上下文环境方法
public ServletContext getServletContext()
获取Servlet容器为WEB应用创建的Servlet上下文环境对象ServletContext,WEB服务器启动的时候,在加载WEB应用时,为每个加载的WEB应用创建一个代表WEB应用Servlet上下文环境对象。
(3)获取Servlet名称方法
public String getServletName()
获取正在访问的这个Servlet的名称。
以上就是Servlet相关问题的解答,更多关于Java Web方面的问题可以看下这个详细的视频教程网页链接,希望我的回答能帮到你。
Ⅳ Java Servlet 的核心工作机制
Servlet是运行在Servlet容器中的,由Servlet容器来负责Servlet实例的查找、创建以及整个生命周期的管理,Servlet整个生命周期可以分为四个阶段:类装载及实例创建阶段、实例初始化阶段、服务阶段以及实例销毁阶段。
类装载及实例创建阶段
默认情况下,Servlet实例是在接受到第一个请求时进行创建并且以后的请求进行复用,如果有Servlet实例需要进行一些复杂的操作,需要在初始化时就完成,比如打开文件、初始化网络连接等,可以配置在服务器启动时就创建实例,具体配置方法为在声明servlet标签中添加<load-on-startup>1</load-on-startup>标签。
初始化 init(ServletConfig config)
一旦Servlet实例被创建,将会调用Servlet的inint方法,同时传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet生命周期中只会调用一次。
服务 services()
为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,Servlet开发者必须保证该方法的线程安全性。
销毁 destory()
当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中进行资源释放,一旦destory方法被调用,Servlet容器将不会再发送任何请求给这个实例,若Servlet容器需再次使用该Servlet,需重新再实例化该Servlet实例。
二、Servlet执行流程
web服务器接受到一个http请求后,web服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml 配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知道客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后会把所有需要返回的信息放入response对象中并返回到客户端,servlet一旦处理完请求,servlet容器就会刷新response对象,并把控制权重新返回给web服务器。
三、与其它技术的比较
与其它服务相比servlet有以下的一些优点:
1、运行速度上比CGI快,因为使用了多线程
2、servlet使用了标准的api,可被许多web服务支持
3、与系统无关性,一次编译多次使用
转自http://www.javaeye.com/topic/952866
Ⅳ java servlet接收参数如何转变成对象
有多种方法,简单的是用javabean,还有一种是ObjectOutputStream。
Ⅵ 什么是servlet
1.什么是SERVLET?
Servlet是用Java编写的服务器端程序, 其主要功能在于交互式地浏览和修改数据,生成动态Web内容.
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,我们一般将Servlet理解为后者。
这段话可能听起来有些绕, 但如果大家把Servlet与Spring MVC 的前端控制器 DispatcherServlet
结合起来理解, 应该立马就知道它是做什么的了. Servlet 是Java JDK提供的一个接口, 所有的Servlet都继承于它,
而DispatcherServlet是一个继承了实现了Servlet接口的类的类.
2.知识剖析
Servlet 的生命周期
Servlet 的生命周期分为三个阶段, 分别对应Servlet中的三个接口.
init() 初始化.
service() 处理客户端的请求, 具体业务逻辑. ServletRequest 对象用于获得客户端信息,ServletResponse 对象用于向客户端返回信息(客户端可以理解为浏览器)
destroy() 结束时调用. 这个方法只有在servlet的service方法内的所有线程都退出的时候,或在超时的时候才会被调用。
init() 和 destroy() 都只会在Servlet创建和销毁时调用一次, 而service() 则会在响应不同请求时多次调用.
注意Servlet是一个接口,实现了servlet的类,是不能直接处理请求的.
请求需要通过Servlet容器来发送到Servlet, Servlet是运行在Servlet容器中的.
Servlet容器是Web服务器和servlet进行交互的必不可少的组件。常见Web服务器有Tomcat, jetty, resin, 它们也可以称为应用服务器
3.常见问题
1. Servlet 如何接收才能接收到Servlet容器发来的请求?
2. Servlet 什么时候被初始化?
3. DispatcherServlet 如何处理容器发来的请求?
4.解决方案
1. Servlet 容器通过监听端口(8080)来接收用户发送的请求, 然后通过web.xml中的 Servlet-mapping 配置, 来匹配到请求Heades中的url信息, 将其转发到对应Servlet配置中的Servlet实现类完成请求接收.
2. Servlet 的初始化是由Web.xml 中的 loadOnStartup 配置控制的.
当 loadOnStartup < 0 或者不写时, 接收到第一次请求的时候实例化.
当 loadOnStartup > 0 web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化
当 loadOnStartup = 0 web容器启动的时候做实例化处理,相当于是最大整数,因此web容器启动时,最后被实例化
3. 通过DispatcherServlet 的执行流程来看它时如何处理请求的
希望对您有所帮助!~
Ⅶ JavaWeb开发中Servlet是那一层以及用法
JavaWeb开发中Servlet是属于控制层最底端的部分的 ,也就是MVC c的最底层。
他往往用来处理请求的。他的外一层就是View、他的一层就是Service(Servlet往往调用他做逻辑判断的操作)
原始的Servlet的生命周期
servlet在第一次访问的时候就会被初始化
servlet对象一旦被创建就会驻留在内存中,当服务器关闭或者web应用被移除的时候servlet对象才销毁
1:当servlet被创建的时候那么 servlet就会被初始化 调用init方法
2:任何请求来自客户端,service方法就会被自动调用
3:当servlet从服务器被移除的时候 distroy方法将会被调用
如下是一个原始的Servlet代码(这并不是现在开发一贯的做法,请往下看)
importjavax.servlet.*;
classFirstServlet
extendsGenericServlet{
publicvoid
service(ServletRequestrequest,ServletResponseresponse)
throwsServletException,java.io.IOException
{
response.getWriter().write("hello
servlet");
}
}
ServletConfig
getServletConfig 方法 用来获得servlet的启动信息,和getServletInfo方法 可以活的servlet的基本信息,和关于它自己的一些信息,例如作者,版本,版权等
为Servlet设置初始参数要在web.xml中配置(只对当前servlet有效)
如下是在Web.xml中为当前servlet配置初始化参数的。
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>
cn.itcast.servlet.ServletConfigDemo</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encoding2</param-name>
<param-value>utf-9</param-value>
</init-param>
</servlet>
ServletCofig对象可以通过this.getServletConfig来获得,因为在父类中已经在获得了ServletConfig对象;也可以servletconfig对象可以通过父类的init方法内穿过来的config对象获取
publicvoidinit(ServletConfigconfig)throwsServletException{this.config=
config;this.init();}()
{returnconfig;}
ServletContext
通常我们称ServletContext叫Application对象 。也叫域对象
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回
通常获得ServletContext的方法是直接getservletcontext
因为在父类中已经定义了这样的方法,子类直接继承使用
ServletContext对象的引用。getServletContext().getInitParameter("a")
的方式获得web应用的初始化参数
我们还可以为整个web应用配置初始化参数
Request & Response
基本servlet 中service的方法的request 和 response 对象分别是
RequestFacade 和 ResponseFacade 这个类是Tomcat中的类
他继承自HttpServletRequest而 HttpServletRequest 又继承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL();获得URl
request.getHeader("accept-encoding"); 获得支持的压缩格式
request.getHeader("referer");获得来自哪里(防盗链)
request.getInputStream(); 获得消息体
request.getParameter("name") 获得参数
如下是现代开发中常用的Servlet
publicclass
{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException
{
}
publicvoid
doPost(HttpServletRequestrequest,HttpServletResponse
response)
throws
ServletException,IOException{
doGet(request,
response);
}
}