javaweb中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();  // 被请求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技术的用法的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程之家行业资讯频道哦!

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

相关推荐


应用场景 C端用户提交工单、工单创建完成之后、会发布一条工单创建完成的消息事件(异步消息)、MQ消费者收到消息之后、会通知各处理器处理该消息、各处理器处理完后都会发布一条将该工单写入搜索引擎的消息、最终该工单出现在搜索引擎、被工单处理人检索和处理。 事故异常体现 1、异常体现 从工单的流转记录发现、
线程类,设置有一个公共资源 package cn.org.chris.concurrent; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @Descrip
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量
Java 9中JShell中的不同启动脚本是什么?
使用Java的位填充错误检测技术
java中string是什么
如何使用Java中的JSON-lib API将Map转换为JSON对象?
Java菜单驱动程序以检查数字类型
使用Junit的Maven项目 - 检查银行账号
JAVA编程基础
在Java中使用throw、catch和instanceof来处理异常
在Java中,将数组分割为基于给定查询的子数组后,找到子数组的最大子数组和
如何在Java中从给定的字符串中删除HTML标签?
在PHP中,IntlChar getBlockCode()函数的翻译如下:
如何在Android中实现按下返回键再次退出的功能?
如何使用Java中的流式API解析JSON字符串?
Java中的模式类