javaservlet调用服务

调用servlet接口流程

目前对JavaWeb的理解是:用一次提交过程来表示,当点击一个提交的标签input。会将url传到tomcat服务器,在tomcat的配置文件中找到管理javaweb项目的配置文件server.xml,在server.xml中配置管理web项目的路径。从当前web项目的路径中找到web.xml文件(web.xml文件是配置servlet的内容,把网络请求和响应的信息都是放在servlet中的service方法里处理)。在servlet中创建ServletRequest对象和ServletResponse对象,并调用service方法,在service方法中对浏览器做出响应操作。

1:浏览器发出请求:

** 2:解析请求信息:**

http:协议

www.easyaq.com:找互联网上的哪一台主机.

80: 从主机中找到对应80端口的程序—Tomcat服务器.

/day11: 当期项目的上下文路径

/hello: 当期请求的资源名

3:找到Tomcat根/config/server.xml文件.

解析server.xml文件:

判断获取哪一个Context/元素的path属性为day11.

若找不到:404错误.

若 找到:解析该Context/元素,得到docBase属性,获取当期访问Web项目的根的绝对路径:

H:\javaPros\Servlet\webapp

4:从H:\javaPros\Servlet\webapp下的WEB-INF下找到web.xml文件.

判断web.xml中是否有url-pattern的文本内容为/hello.

若找不到:404错误.

若 找到:继而可以获取该资源对应Servlet类的全限定名称:com._520it._01_hello.HelloServlet.

5:判断Servlet实例缓存池中是否有

com._520it._01_hello.HelloServlet的对象.

MapString,Servlet cache = ……(Tomcat提供的);

key:存Servlet类的全限定名称

value:该Servlet类的对象.

Servlet obj = cache.get(“com._520it._01_hello.HelloServlet”);

if(obj==null){

//Servlet实例缓存中没有该类的对象,第一次.

GOTO 6:

}else{

//有对象,非第一次.

GOTO 8:

}

6:使用反射调用构造器,创建对象.

obj = Class.forName(“com._520it._01_hello.HelloServlet”).newInstance();

把当前创建的Servlet对象,存放在缓存之中,供下次使用.

cache.put(“com._520it._01_hello.HelloServlet”,obj);

7:创建ServletConfig对象,并调用init方法.

obj.init(config);

8:创建ServletRequest对象和ServletResponse对象,并调用service方法.

obj.service(req,resp);

9:在service方法中对浏览器做出响应操作.

javaservlet调用服务

java中远程调用servlet是怎么解决

在J2EE世界中要实现远程方法调用的手段很多,如Spring:Hessian/Burlap, RMI, and JAX-RPC, JMS ,webservice。等等,你可能有过编写EJB的经验或对RMI有所了解,如果你使用过Spring框架的远程调用,你可能你各种远程调用方法就比较清楚和了解,可是你未必尝试过一切都是自己构造来实现远程调用,这里我们尝试同过编写一个简单的Servlet(极其简单)通过http实现远程方法调用。希望对于servlet你有一个新的认识,在下一篇文章中,我会尝试给你另一个servlet的新的应用。[@more@]让我们先从这个servlet开始:

public class RemoteServlet extends HttpServlet {

public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,java.io.IOException{

System.out.print(“BaseDataServlet service received a remote request”);

ObjectInputStream in = new ObjectInputStream(req.getInputStream());

resp.setContentType(“application/octest-stream”);

ByteArrayOutputStream byteout = new ByteArrayOutputStream();

ObjectOutputStream out = new ObjectOutputStream(byteout);

Request request;

try {

request = (Request)in.readObject();//读取远程调用请求的封装对象

//System.out.println(“:n”+request.toString()); RequestProcessor processor=new RequestProcessor();//请求解析对象 out.writeObject(processor.processorLocalhost(request));//执行请求并回写结果 out.flush();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

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中,调用其他类对象的方法呢

这个注入就好

可以使用@Autowired标签

将你要调用的接口引入

然后调用实现类的方法就行

但是每调用一个接口

需要@Autowired注入

java中servlet 是怎么调用的?能详细说明一下吗

Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。

Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。

在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择。

Java Servlet API 2.2 简介

Java Servlet API 2.2 的类和接口组成两个Java 包,即:javax.servlet 和 javax.servlet.http(还包括javax.servlet.jsp包,不在本篇文章讨论范围之内)。

javax.servlet 包提供了控制 Servlet 生命周期所必需的 Servlet 接口,是编写 Servlet 时必须要实现的。

javax.servlet.http 包提供了从Servlet 接口派生出的专门用于处理 HTTP 请求的抽象类和一般的工具类。所有的Servlet 对象都要实现Servlet 接口,大多数情况下是作为已经实现了Servlet 接口的javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 这两个抽象类的子类来间接实现Servlet 接口。

javax.servlet 包定义的类和接口:

interface RequestDispatcher

//定义一种对象,用于从客户接受请求,并将请求发送到服务器上任何指定的资源,如一个Servlet 、JSP 或 HTML 文件。

interface Servlet

//定义了所有 Servlet 必须实现的方法。

interface ServletConfig

//定义Servlet config 对象,由Servlet 引擎用在 Servlet 初始化时,向 Servlet 传递信息。

interface ServletContext

//定义了一系列方法,以便Servlet与其运行的环境通信。

interface ServletRequest

//定义了用于向Servlet传递客户请求信息的对象。

interface ServletResponse

//定义了一个对象,由Servlet用于向客户发送响应。

interface SingleThreadModel

//用于保证Servlet在任一时刻,只处理一个请求。

class GenericServlet

//继承Servlet接口,定义了一个通用的,与协议无关的Servlet。

class ServletInputStream

//定义了一个输入流,用于由Servlet从中读取客户请求的二进制数据。

class ServletOutputStream

//定义了一个输出流,用于由Servlet向客户发送二进制数据。

class ServletException

//定义了一个当Servlet遇到问题时可以抛出的异常。

class UnavailableException

//定义了一种异常,用于由Servlet指明它永远或暂时不可用。

javax.servlet.http 包定义的类和接口:

interface HttpServletRequest

//继承了ServletRequest 接口,为HTTPServlet 提供请求信息。

interface HttpServletResponse

//继承了ServletResponse 接口,为HTTPServlet 输出响应信息提供支持。

interface HttpSession

//为维护 HTTP 用户的会话状态提供支持。

interface HttpSessionBindingListener

//使得某对象在加入一个会话或从会话中删除时能够得到通知。

interface HttpSessionContext

//由Servlet 2.1 定义,该对象在新版本已不被支持。

class Cookie

//用在Servlet 中使用Cookie 技术

class HttpServlet

//定义了一个抽象类,继承 GenericServlet 抽象类,应被 HTTPServlet 继承。

class HttpSessionBindingEvent

//定义了一种对象,当某一个实现了HttpSessionBindingListener接口的对象被加入会话或从会//话中删除时,会收到该类对象的一个句柄

class HttpUtils

//提供了一系列便于编写HTTPServlet 的方法。

下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。

HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请扩展 HttpServlet 类,该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由和标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。

(1) init() 方法

在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。

缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。

(2) service() 方法

ervice() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个”请求”(ServletRequest)对象和一个”响应”(ServletResponse)对象作为参数。在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。

当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

当一个客户通过HTML 表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

Servlet的响应可以是下列几种类型:

一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。

一个HTTP错误响应, 重定向到另一个URL、servlet、JSP。

(3) destroy() 方法

destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。

当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。

(4) GetServletConfig()方法

GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关servlet 的环境信息。

(5) GetServletInfo()方法

GetServletInfo()方法是一个可选的方法,它提供有关servlet 的信息,如作者、版本、版权。

当服务器调用sevlet 的Service()、doGet()和doPost()这三个方法时,均需要 “请求”和”响应”对象作为参数。”请求”对象提供有关请求的信息,而”响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。

javax.servlet 软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和 HttpServletResponse。

Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用”请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用”响应”对象的方法发送响应,该响应是准备发回客户机的。

!– Standard Action Servlet Configuration (with debugging) —

servlet

servlet-namelog4j-init/servlet-name

servlet-classcom.neusoft.ehr.common.Log4jInit/servlet-class

init-param

param-namelog4j-init-file/param-name

param-value/WEB-INF/classes/property/log4j.properties/param-value

/init-param

load-on-startup1/load-on-startup

/servlet

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月28日 09:51:53
下一篇 2024年3月28日 09:59:04

相关推荐

  • javaservlet是不是线程安全的,servlet线程安全吗

    java问题,servlet问题,servlet在什么时候被初始化?它是线程安全吗? Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求。所以Servlet是线程不安全的。 ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。 Ser…

    2024年5月23日
    5100
  • javaservlet中文乱码,servlet解决中文乱码问题

    javaweb怎么处理中文乱码 获取 HTTP 请求中的中文参数时可能会有乱码,所以先将字符串变回字节数组,然后再按照 UTF-8 进行编码。 通过浏览器调用servlet,页面显示乱码。 采用相同的格式去接收(ISO-8859-1),然后用能解析的编码(utf-8)去转换。这样我们就能得到能兼容中文的格式了。这样处理之后发往前台。 读取文件的时候如果是用的…

    2024年5月22日
    3300
  • javaservlet接收json,java接收前台json数据

    servlet怎么获取ajax传过来的json数据 你前台写错了。一般只有前台获取后台响应返回的json数据,哪有前台向后台发送json数据的。 var url = /test/check; $.ajax({ type: post, url: url,// data: para=+para, 此处data可以为 a=1&b=2类型的字符串 或 jso…

    2024年5月12日
    3300
  • javaservlet配置

    如何使用servlet 使用servlet的步骤如下: 1.创建一个普通的java类并继承httpservlet。 2.覆盖service方法。 3.在service方法中书写业务逻辑代码。 4.在web-inf目录下的web.xml中配置servlet。 java 怎么配置servlet?Servlet是组件,必须放在容器中,使用容器访问。访问Servle…

    2024年3月27日
    4800
  • javaservlet容器

    支持JSP和Servlet的容器除了Tomcat之外,还有哪些? 支持jsp和servlet的web容器除了tomcat还有以下几种:\r\nResin 服务器\r\nResin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态…

    2024年3月24日
    4100
  • javaservlet项目源码

    如何快速读懂项目源码javaWeb 一:学会如何读一个JavaWeb项目源代码 步骤:表结构-web.xml-mvc-db-spring ioc-log- 代码 1、先了解项目数据库的表结构,这个方面是最容易忘记 的,有时候我们只顾着看每一个方法是怎么进行的,却没 有去了解数据库之间的主外键关联。其实如果先了解数据 库表结构,再去看一个方法的实现会更加容易。…

    2024年3月24日
    4400
  • javaservlet跳转页面

    用java做好的登陆界面,当登陆成功后跳转到下个页面的代码是什么?_百度… JAVA中在登录界面按住Ctrl键,鼠标单击super.say,Eclipse中跳转结果。按住Ctrl键,单击第3行代码sayHello,跳转结果。看到这样的跳转结果会让很多初学者摸不着头脑。 直接从web.xml中配置,直接跳转到login.jsp登录界面。从index…

    2024年3月20日
    4000
  • javaservlet相对路径

    tomcat的Servlet配置路径 work:tomcat把各种由jsp生成的servlet都放在了这个文件夹下,里面包含.java文件和.class文件。启动Tomcat我们可以直接运行bin目录下的 Tomcatexe 可执行文件。在我们启动完成以后在浏览器中输入:http://localhost:8080。 Servlet是组件,必须放在容器中,使用…

    2024年3月19日
    3700

发表回复

登录后才能评论



关注微信