java serverlet_Serverlet程序

java serverlet_Serverlet程序Serverlet 是用 Java 编写的服务器端程序 主要用于交互地浏览和修改数据 生成动态 Web 内容 一个 serverlet 就是一个继承于 HttpServlet 抽象类的 Java 类 下面先看一个简单的例子 importjavax servlet importjavax servlet http HttpServlet importjavax servlet http HttpServletR

Serverlet是用Java编写的服务器端程序;主要用于交互地浏览和修改数据,生成动态Web内容;

一个serverlet就是一个继承于HttpServlet抽象类的Java类;下面先看一个简单的例子

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

import javax.servlet.*;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import java.io.*;public class HelloWorldServlet extendsHttpServlet {public void service(HttpServletRequest req, HttpServletResponse res) throwsIOException{

res.setContentType(“text/html”);

PrintWriter out=res.getWriter();

out.println(“

Hello World!”);

out.println(“

“);

out.println(“

Hello World!

“);

}

}

HelloWorldServlet

将这个Java代码编译成.class 类得到 HelloWorldServlet.class 文件;

然后就是将这个文件放入tomcat的一个站点的 ../WEB-INF/classes/   下面

在对应的web.xml 里面添加如下内容:

HelloWorldServlet

HelloWorldServlet

HelloWorldServlet

/HelloWorldServlet/*

OK,现在可以在浏览器里访问了;

http://localhost:8080/webapp/HelloWorldServlet/     webapp为站点名;

下面介绍servlet是怎么样被访问的,首先浏览器发送的URL,服务器会在web.xml文件中寻找对应的标签,再找到对应的servlet对应的,然后再根据,找到对应的servlet-class类 , 然后new一个对象,执行里面的方法;

servlet生命周期:

1、加载(通过classloader加载类)

2、实例化(new 一个对象)  这时候会执行构造函数

3、执行初始化函数(init(servletcofig)函数)//servletcofig  这个参数记录了 web.xml中关于这个servlet的配置信息

4、处理请求

5、销毁(执行destroy函数)

注意,无论有N多用户,对于一个符合J2EE标准的服务器,一个servlet的类,值产生一个servlet对象,所有用户都使用这一个对象;

当第一个用户访问的时候,会执行步骤1~4   其他用户访问的时候,就只执行4,不会再执行1~3;

等待服务器关闭的时候,执行5;

实际上,servlet有这样一个接口,singlethread(大概是这个名字),重写这个函数,就可以使得每调用一次,创建一个对象,然而这样会非常非常消耗内存;

servlet 设定自启动及参数值在XML中配置的方法:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

Log4JInitServlet

Log4JInitServlet

log4j-properties-location

C:/myTestJava/Log4JWeb/WebRoot/ini/log4j.properties

1

WEB.xml 部分

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.io.File;import java.io.IOException; //import org.apache.logging.log4j.core.Logger;

import org.apache.log4j.*;importjavax.servlet.ServletConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/* Servlet implementation class Log4JInitServlet*/

public class Log4JInitServlet extendsHttpServlet {private staticLogger logger;publicLog4JInitServlet() {super();//TODO Auto-generated constructor stub

}/*@seeServlet#init(ServletConfig)*/

public void init(ServletConfig config) throwsServletException {//super.init(config);

ServletContext sc =config.getServletContext();

String log4jLocation= config.getInitParameter(“log4j-properties-location”);try{

System.out

.println(“当前路径默认=======” + System.getProperty(“user.dir”));

System.out.println(“—配置文件路径—” +log4jLocation);

logger= Logger.getLogger(Log4JInitServlet.class);

PropertyConfigurator

.configure(“C:/myTestJava/Log4JWeb/WebRoot/ini/log4j.properties”);int i = 2;while ((i–) != 0) {

logger.info(“Info: this is info;”);

logger.debug(“Debug: this is Debug;”);

logger.error(“Error: this is Error;”);

}

System.out.println(“——————Init success”);

}catch(Exception e) {

System.out.println(“Warning:there is an error:” +e.getMessage());

}

}/*@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse

* response)*/

protected voiddoGet(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException {//TODO Auto-generated method stub

}/*@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse

* response)*/

protected voiddoPost(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException {//TODO Auto-generated method stub

}

}

在init中使用了XML中配置的值

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202820.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午11:13
下一篇 2026年3月19日 下午11:14


相关推荐

  • XX高校校园网网络规划与设计_职业生涯规划word文档

    XX高校校园网网络规划与设计_职业生涯规划word文档一.设计要求该网络至少需要有9个网段(每个网段至少2台主机(两个IP地址)),每个网段的起始地址段为:192.168.开头,第三位是你的学号,比如:你的学号是18,则你的地址段为:192.168.18.开头。拓扑图至少有5台路由器,核心层为2台三层交换机,汇聚层3台交换机,接入层6台交换机。本设计模拟一个校园网的规划与设计,该校园有三个园区,东区、南区和北区。园区网外部路由(东区、南区和北区路由器)之间的链路层协议选用PPP、路由协议选用rip。园区网边界路由器启用NAT技术。画出网络拓扑图。

    2022年10月6日
    4
  • 没有风投的创业法则

    没有风投的创业法则

    2021年7月29日
    58
  • 扩展欧几里德算法计算乘法逆元详解

    扩展欧几里德算法计算乘法逆元详解乘法逆元的定义 nbsp nbsp nbsp nbsp nbsp A XMODN 1 则称 X 为 A 关于模 N 的乘法逆元 注 nbsp nbsp nbsp nbsp nbsp 只有两个数互素的时候才会有乘法逆元 nbsp nbsp nbsp nbsp nbsp 两个数不互素是没有乘法逆元的 nbsp 费马小定理 利用费马小定理只能求出 N 为素数的情况下的乘法逆元 所以还是需要采用扩展欧几里德算法来计算普遍情况下的乘法逆元的情况 下面的算法是求出 n 的简化剩余集的元素个数 利用 an

    2026年3月19日
    2
  • Claude Code for Windows无法启动?

    Claude Code for Windows无法启动?

    2026年3月12日
    2
  • flex布局实现垂直居中

    flex布局实现垂直居中使用flex布局实现居中布局的步骤:父级元素使用flex布局父级元素使用align-items:center;代码示例:<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″/><metahttp-equiv=”X-UA-Compatible”content=”IE=edge”/><metaname=”viewport”

    2022年4月30日
    59
  • 科大讯飞iFLYTEKM610星火版双模无线AI鼠标475元

    科大讯飞iFLYTEKM610星火版双模无线AI鼠标475元

    2026年3月14日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号