iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaWeb Servlet技术及其应用实践
  • 907
分享到

JavaWeb Servlet技术及其应用实践

JavaWeb Servlet配置JavaWeb Servlet 2023-05-20 08:05:04 907人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录ServletServlet声明Servlet生命周期请求方式GET/POST比较字符编码两种转页三种容器request请求session请求application上下文(全局)

Servlet

Servlet(Server Applet)是Java Servlet的简称。 是在服务器端执行的 , 用于响应客户端请求的Java类。httpservlet 是使用java语言对Http通信的实现。

Servlet声明

WEB.xml 中声明Servlet的请求url及对应的类路径 , 3.0版本后可以在类上使用 @WebServlet(“/test”) 注解来声明

servlet-class : 内部地址路径

url-pattern : 对外发布的名字

servlet-name : 两者的对应

  <servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.yuan.servlet.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>

Servlet生命周期

加载 : 在web.xml中声明Servlet相关信息

实例化 : 由WebServer( 如 : Tomcat )根据web.xml中声明信息进行实例化, 实例化后才能调用方法

​ 第一种方式 : 第一次被请求时, 先实例化, 然后调用了 init() 方法进行初始化

​ 第二种方式 : 在 web.xml 文件中在<servlet></servlet>下加入 <load-on-startup>0</load-on-startup>Web服务器启动时就会实例化

初始化 : 在init() 方法中,进行初始属性设置

服务 : 用户发请求后, 会调用 service(request, response) 方法, 请求/响应的信息由WebServer封装成HttpServletRequest / HttpServletResponse对象

销毁 : 当servlet被销毁时, 调用destroy()方法, 可以在这个方法中释放一些资源

垃圾回收 : 被JVM进行垃圾回收时, 调用 finalize() 方法

package com.yuan.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        // 初始化方法
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 服务方法
    }
    @Override
    public void destroy() {
        //销毁方法
    }
}

请求方式

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。

一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。

GET/POST比较

GET一般用于获取/查询资源信息,而POST一般用于更新资源信息

默认方式 :

​ -GET 超链接, location.href, fORM表单 默认都是GET的

​ -POST 将 form表单的 method属性设置成 post, form通信转成POST方式

传值方式 :

​ -GET 数据会附在URL之后, 参数显示在地址栏。所以是明文传值

​ -POST 数据放置在HTTP包的包体中, 参数不在地址栏显示, 登录时要使用POST, 隐藏登录信息

传值大小:

​ -GET 1K~8K,受浏览器的影响, 通常为2K

​ -POST 理论上没有大小的限制, 所以做上传文件时, 由于文件的大小原因, 只能使用POST

中文传递 :

​ -GET 默认使用ISO-8859-1, 现在的浏览器都有优化

​ -POST 根据页面的中文编码设置, 服务器接值要转码

字符编码

GB2312编码:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。

BIG5编码:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。

GBK编码:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。

​ GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。

Unicode编码(UTF-8):国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。

u4e00-u9fa5 , 0x3400-0x4DB5 (中文)

两种转页

内部转 :

request.getRequestDispatcher( "目标页面" ) .forward( request, response );

跳转后浏览器地址栏不会变化

目标页面路径可以使用相对路径

使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute()

重定向 :

response.sendRedirect( request.getContextPath() + "目标页面" ); 

跳转后浏览器地址栏变化。

目标页面要使用绝对路径

这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute()来传递

三种容器

存储容器 : 是指用于在请求或转页过程中用来存储所在传递的参数值的对象

常用方法

// 添加属性
.setAttribute(key, value)
// 取属性值
.getAttribute(key)
// 移除属性
.removeAttribute(key)

在Web项目中有三种容器, 因为它们的作用范围(生命周期)不同, 也叫三种作用域

其中 application 包含 多个session , session 包含多个 request

所以 从 request能得到session , 而从 request, session 能得到 application

request请求

类型 : HttpServletRequest

生命周期 : 客户端发起请求创建

​ 遇到响应 Response 或者生成页面结束

常用方法 :

// 接页面传来的值
String value = request.getParameter(key);   //接一个值
String[] vals = request.getParameterValues(key);  //接一组值
// 得到其它容器
HttpSession session = request.getSession();
ServletContext app = request.getServletContext();
// 得到URL 信息
StringBuffer url = request.getRequestURL();
String scheme = request.getScheme();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String uri = request.getRequestURI();
String cpath = request.getContextPath();       // 得到绝对路径
String servletUrl = request.getServletPath();  // 被请求servlet
String remoteAddr = request.getRemoteAddr();  // 得到客户端IP

session请求

类型 : HttpSession

生命周期 : 浏览器与服务器建立通信开始

​ 主动关闭或长时间不与服务器通信结束

常用方法 :

// 取session 的 标识 id
String sid = session.getId();
// 获取最长等待时间
int max = session.getMaxInactiveInterval();
// 设置最长等待时间, 以秒为单位
session.setMaxInactiveInterval(len);
// 取所属的上下文
ServletContext app = session.getServletContext();

在 web.xml中也可以设置最长等待时间, 单位是分钟

  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>

application上下文(全局)

类型 : ServletContext

生命周期 : 项目启动创建

​ 项目关闭结束

常用方法 :

// 取项目的真实路径(发布路径)
String path = app.getRealPath(path);
// 取 web.xml 中设置的参数
String pv = app.getInitParameter(paramName);

在web.xml 里信息可以被application获取

  <context-param>
    <param-name>paramName</param-name>
    <param-value>paramValue</param-value>
  </context-param>

ServletConfig设置对象

在 Servlet的init() 初始化方法传入参数 ServletConfig

public void init(ServletConfig config) throws ServletException {
    // 取web.xml 文件中在<servlet></servlet>下的信息
	String icon = config.getInitParameter(configName);
	// 取所属的上下文
	ServletContext app = config.getServletContext();
}

在web.xml 文件中在下的信息

  <servlet>
    <init-param>
      <param-name>configName</param-name>
      <param-value>configValue</param-value>
    </init-param>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>com.yuan.servlet.TestServlet</servlet-class>
  </servlet>

到此这篇关于javaweb Servlet技术及其应用实践的文章就介绍到这了,更多相关JavaWeb Servlet内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaWeb Servlet技术及其应用实践

本文链接: https://www.lsjlt.com/news/214251.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaWeb Servlet技术及其应用实践
    目录ServletServlet声明Servlet生命周期请求方式GET/POST比较字符编码两种转页三种容器request请求session请求application上下文(全局)...
    99+
    2023-05-20
    JavaWeb Servlet配置 JavaWeb Servlet
  • javaweb中servlet技术的用法
    本篇文章和大家了解一下javaweb中servlet技术的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。ServletServlet(Server Applet)是Java Servlet的简称。 是在服务器端执行的...
    99+
    2023-07-06
  • JavaWeb之Serverlet技术怎么应用
    Servlet是JavaWeb中的一种技术,它是运行在服务器上的Java程序,用于处理客户端的请求并生成相应的响应。以下是Servl...
    99+
    2023-10-19
    JavaWeb
  • 使用IDEA创建servlet JavaWeb 应用及使用Tomcat本地部署的实现
    目录需要安装好的软件背景知识-Servlet是什么?Servlet 是一种规范Servlet 接口JSPWeb 容器背景知识-JavaWeb应用的目录结构1.新建一个java项目2....
    99+
    2024-04-02
  • PHP 防抖技术的优势及其在实际项目中的应用
    随着移动互联网的快速发展,用户对于web应用程序的要求也越来越高。随着用户在web应用程序中的操作频繁增加,前端错误的增加也是不可避免的。这导致程序的连续,重复的请求,从而占用系统资源,降低程序的性能和响应速度。为了解决这个问题,我将会介绍...
    99+
    2023-10-21
    PHP 实际应用 防抖技术
  • PHP 防抖技术的实现原理及其在项目中的应用
    防抖技术(Debounce)是一种常用于前端开发的技术,其作用是在某个事件被触发后,延迟执行相应的操作,直到事件停止触发一定时间后才真正执行。这种技术常被用于减少频繁触发事件带来的性能影响,提升用户体验。而在 PHP 中同样可以实现防抖技术...
    99+
    2023-10-21
    实现原理 项目应用 关键词:PHP 防抖技术
  • 静态重定位技术的原理及其应用案例
    静态重定位技术的原理和应用 引言:在现代计算机系统中,内存管理是一个非常重要的课题。随着软件的复杂性和规模的增加,内存的限制成为了我们面临的一个挑战。为了更高效地利用内存资源,静态重定位技术应运而生。本文将介绍静态重定位技术的原...
    99+
    2024-01-18
    技术 静态 重定位
  • MicroPython技术及应用定义
    MicroPython极精简高效的实现了Python3语言,包含Python标准库的一小部分,在单片机和受限环境中运行。 1.1、MicroPython发展 由剑桥大学的理论物理学家乔治达明设计,遵循MIT许可协议,与Arduino类似,...
    99+
    2023-01-31
    定义 技术 MicroPython
  • Golang 泛型技术解析:应用与实践探讨
    在过去的几年里,Golang(Go)已经成为了许多开发人员的首选编程语言之一。其简洁的语法、高效的并发模型以及快速的编译速度使其在各种应用领域中广受欢迎。然而,直到最近,Golang ...
    99+
    2024-03-06
    golang 应用与实践 泛型技术
  • PHP 防抖技术的实现方案及其在项目中的应用效果
    随着互联网的快速发展,Web应用程序的用户交互变得越来越频繁。用户在页面上的一些操作可能会触发后台数据库的读写操作,而这些操作的频繁发生可能会对系统造成压力。因此,为了保证系统的稳定性和响应速度,我们需要对用户的操作进行控制,防止频繁触发后...
    99+
    2023-10-21
    PHP 应用效果 实现方案 防抖
  • PHP二维码活码技术解读与应用实践
    PHP二维码活码技术解读与应用实践 随着移动互联网的快速发展,二维码正在成为一种重要的信息传输工具。在网页、APP以及各类线下场景中,我们经常可以看到二维码的身影。而随着二维码的发展,...
    99+
    2024-04-02
  • Java容器同步技术在Laravel中的应用实践
    在现代Web应用程序中,同步和异步处理都是非常常见的。而也成为了一个热门话题。本文将介绍Java容器同步技术的概念、原理和在Laravel中的应用实践。 一、Java容器同步技术的概念 Java容器同步技术是指Java容器在多线程环境下保...
    99+
    2023-09-14
    容器 同步 laravel
  • ZT - RFT ScriptAssure 技术解析及应用实例(4)
    Script Assure 的一些使用小经验最后列出一些在实践中总结出的小经验,以供大家参考使用[@more@]Script Assure 的一些使用小经验最后列出一些在实践中总结出的小经验,以供大家参考使用。如果您希望脚本回放更快,回放过...
    99+
    2023-06-04
  • ZT - RFT ScriptAssure 技术解析及应用实例(3)
    ScriptAssure 技术应用实例下面让我们看看一些例子,看 IBM Rational 工具是如何发挥脚本的依赖性和独立性的优势,或者结合这两者来解决某些问题[@more@]ScriptAssure 技术应用实例下面让我们看看一些例子,...
    99+
    2023-06-04
  • 深入剖析Ajax技术:揭开其核心技术原理与应用
    深入了解Ajax技术:探索其核心技术原理与应用Ajax(Asynchronous JavaScript and XML)是一种在Web开发中广泛应用的技术,它通过使用异步通信和JavaScript的技术手段,实现了在不刷新整个网...
    99+
    2024-01-26
    ajax 技术原理 应用(应用案例 应用实践)
  • 利用Memcached缓存技术优化Web应用的实践经验
    随着互联网行业的快速发展,Web应用的用户访问量也在不断增加。对于Web应用开发人员来说,如何提高Web应用的访问速度成为了一个重要的问题。目前,缓存技术被广泛应用于Web应用的开发中,Memcached作为一种轻量级的缓存技术,也逐渐受到...
    99+
    2023-05-15
    memcached 缓存技术 优化Web应用
  • Memcache缓存技术在PHP项目中的应用和实践
    Memcache是一种开源的、分布式的缓存技术。它通过将数据存储在内存中,极大地提高了数据的访问速度,从而提升了网站的性能和响应速度。在PHP项目中,Memcache缓存技术也被广泛应用,并且取得了很好的效果。本篇文章将深入探讨Memcac...
    99+
    2023-05-17
    Memcache 缓存技术 PHP项目
  • 如何学习PHP开发技术并应用于实践中?
    PHP是一种流行的服务器端脚本语言,它可以用来开发动态网站、Web应用程序和电子商务网站。对于那些想要学习PHP开发技术的人来说,掌握PHP的基本语法和编程概念是至关重要的。在本文中,我们将讨论如何学习PHP开发技术并将其应用于实践中。 ...
    99+
    2023-10-01
    开发技术 教程 numpy
  • Java对象池技术的原理及其实现方法
    这篇文章主要讲解了“Java对象池技术的原理及其实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java对象池技术的原理及其实现方法”吧!摘 要 :本文在分析对象池技术基本原理的基础上...
    99+
    2023-06-03
  • PHP中的封装技术及应用
    封装是面向对象编程中的一个重要概念,它指的是将数据和对数据的操作封装在一起,以便提供对外部程序的统一访问接口。在PHP中,封装可以通过访问控制修饰符和类的定义来实现。本文将介绍PHP中的封装技术及其应用场景,并提供一些具体的代码示例。一、封...
    99+
    2023-10-21
    继承 封装
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作