iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >javaweb中servlet技术的用法
  • 613
分享到

javaweb中servlet技术的用法

2023-07-06 13:07:16 613人浏览 独家记忆
摘要

本篇文章和大家了解一下javaweb中servlet技术的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。ServletServlet(Server Applet)是Java Servlet的简称。 是在服务器端执行的

本篇文章和大家了解一下javaweb中servlet技术的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

Servlet

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

javaweb中servlet技术的用法

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生命周期

javaweb中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();  // 被请求servletString remoteAddr = request.getRemoteAddr();  // 得到客户端IP
session请求

类型 : HttpSession

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

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

常用方法 :

// 取session 的 标识 idString 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技术的用法的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网精选频道哦!

--结束END--

本文标题: javaweb中servlet技术的用法

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

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

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

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

下载Word文档
猜你喜欢
  • C++ 生态系统中流行库和框架的贡献指南
    作为 c++++ 开发人员,通过遵循以下步骤即可为流行库和框架做出贡献:选择一个项目并熟悉其代码库。在 issue 跟踪器中寻找适合初学者的问题。创建一个新分支,实现修复并添加测试。提交...
    99+
    2024-05-15
    框架 c++ 流行库 git
  • C++ 生态系统中流行库和框架的社区支持情况
    c++++生态系统中流行库和框架的社区支持情况:boost:活跃的社区提供广泛的文档、教程和讨论区,确保持续的维护和更新。qt:庞大的社区提供丰富的文档、示例和论坛,积极参与开发和维护。...
    99+
    2024-05-15
    生态系统 社区支持 c++ overflow 标准库
  • c++中if elseif使用规则
    c++ 中 if-else if 语句的使用规则为:语法:if (条件1) { // 执行代码块 1} else if (条件 2) { // 执行代码块 2}// ...else ...
    99+
    2024-05-15
    c++
  • c++中的继承怎么写
    继承是一种允许类从现有类派生并访问其成员的强大机制。在 c++ 中,继承类型包括:单继承:一个子类从一个基类继承。多继承:一个子类从多个基类继承。层次继承:多个子类从同一个基类继承。多层...
    99+
    2024-05-15
    c++
  • c++中如何使用类和对象掌握目标
    在 c++ 中创建类和对象:使用 class 关键字定义类,包含数据成员和方法。使用对象名称和类名称创建对象。访问权限包括:公有、受保护和私有。数据成员是类的变量,每个对象拥有自己的副本...
    99+
    2024-05-15
    c++
  • c++中优先级是什么意思
    c++ 中的优先级规则:优先级高的操作符先执行,相同优先级的从左到右执行,括号可改变执行顺序。操作符优先级表包含从最高到最低的优先级列表,其中赋值运算符具有最低优先级。通过了解优先级,可...
    99+
    2024-05-15
    c++
  • c++中a+是什么意思
    c++ 中的 a+ 运算符表示自增运算符,用于将变量递增 1 并将结果存储在同一变量中。语法为 a++,用法包括循环和计数器。它可与后置递增运算符 ++a 交换使用,后者在表达式求值后递...
    99+
    2024-05-15
    c++
  • c++中a.b什么意思
    c++kquote>“a.b”表示对象“a”的成员“b”,用于访问对象成员,可用“对象名.成员名”的语法。它还可以用于访问嵌套成员,如“对象名.嵌套成员名.成员名”的语法。 c++...
    99+
    2024-05-15
    c++
  • C++ 并发编程库的优缺点
    c++++ 提供了多种并发编程库,满足不同场景下的需求。线程库 (std::thread) 易于使用但开销大;异步库 (std::async) 可异步执行任务,但 api 复杂;协程库 ...
    99+
    2024-05-15
    c++ 并发编程
  • 如何在 Golang 中备份数据库?
    在 golang 中备份数据库对于保护数据至关重要。可以使用标准库中的 database/sql 包,或第三方包如 github.com/go-sql-driver/mysql。具体步骤...
    99+
    2024-05-15
    golang 数据库备份 mysql git 标准库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作