Servlet学习

1. Servlet 是什么?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2. Servlet 生命周期

  • Servlet生命周期可被定义为从创建直到毁灭的整个过程。
    以下是 Servlet 遵循的过程:
    • Servlet 通过调用init ()方法进行初始化。
    • Servlet 调用service()方法来处理客户端的请求。

      service()方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet()doPost()即可。

    • Servlet 通过调用 destroy()方法终止(结束)。

最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

3. ServeletContext

  • servlet上下文,共享数据
    在这里插入图片描述

4. 重定向和请求转发

  • 重定向——sendRedirect("URL")
//重定向会将请求地址转到重定向地址,请求地址会改变,并显示重定向地址的响应结果
HttpServletResponse resp;
resp.sendRedirect("/重定向url");
  • 请求转发——getRequestDispatcher("URL").forward(req,resp)
//请求转发不会发生请求地址的改变,在当前地址得到转发地址的响应结果
ServletContext context = this.getServletContext();//servlet上下文,全局配置
context.getRequestDispatcher("/请求转发指定url").forward(req,resp);

5. 读取资源文件

  • InputStream——>getResourceAsStream(String path) 读取文件流
  • Properties
    Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable 的, key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。
  1. Properties是继承自HashTable的。
  2. 直接通过keySet()keys()entrySet()方法对Properties中的元素进行遍历时取出来的内容顺序与properties文件中的顺序不一致
  • 在java目录下新建properties
  • 在resources目录下新建properties

这些配置文件都被打包到了同一类路径【classpath】:/WEB-INF/classes
在这里插入图片描述

  • Servlet01
//创建Servlet上下文
ServletContext context = this.getServletContext();
//读取资源配置文件
InputStream is = context.getResourceAsStream("/WEB-INF/classes/db.properties");
Properties properties = new Properties();
//加载流文件
properties.load(is);
//获取properties的key,遍历key得到对应的value
Set<Object> keys = properties.keySet();
//map存放key和value
ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
for (Object key : keys) {
    //遍历存放进map中
    map.put(key.toString(), properties.getProperty((String) key));
}
//存入Servlet上下文的属性中
context.setAttribute("db", map);
context.getRequestDispatcher("/get").forward(req, resp);//请求转发
  • Servlet02
//获取上下文
ServletContext context = this.getServletContext();

//获取上下文属性
Map<String,String> db = (Map<String, String>) context.getAttribute("db");

//写入输出到web网页
PrintWriter out = resp.getWriter();
for (Map.Entry<String,String> entry : db.entrySet()) {
    out.write(entry.getKey()+":"+entry.getValue()+"<br>");
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值