周末总结:Servlet

Servlet

  • Java 编写的服务器端程序。
  • 是sun公司推出的用于在服务器端处理HTTP协议的组件
  • 动态生成页面

Servelt的特点

  • 是服务端的组件
  • 可以动态拼资源(HTML/img等)
  • 满足SUN的规范

术语:处理HTTP协议

1)静态网页

  • 无论谁看,其内容都一样
  • 百度百科之类
  • 服务器直接存HTML,直接返回HTML

2)动态网页

  • 不同人看有不同结果
  • 淘宝,微博等
  • 服务器保存一个组件,动态给每一个用户拼接网页
  • 在Java中这个语言就是Servel

组件:满足规范的对象

Servlet开发步骤

1.创建Web项目

  • 必须具备标准的WEB目录
  • /webapp/WEB-INF/web.xml

2.导入jar包

1)使用maven

  • 使用maven搜索javaee

2)使用tomcat自带的包

  • 选择项目,右键点击,选择properties
  • 弹出框里左侧选择,Targeted Runtimes
  • 再右侧选择Apache Tomcat
  • Apply

3.开发Servlet

1)编写Servlet

  • 创建一个package
  • 创建一个类,名为XxxServlet
  • 继承HttpServlet,从而间接的实现了Servlet
  • 重写父类的service()

2)配置Servlet

  • 先声明类,并给他取别名
  • 再通过别名引用此类,给他取一个访问路径
    在这里插入图片描述

4.部署(拷贝)

  • 在Servlet视图下,选择tomcat
  • 右键点击Add and Remove
  • 将项目添加到右侧
  • 启动tomcat

5.访问

请求方式

什么是请求方式

  • 就是浏览器向服务器发送数据的方式
  • 需要掌握:GET/POST

GET

  • 采用请求路径传参
  • 参数在传递过程中可见,导致隐私性差
  • 路径可容纳数据有限,只能传少量数据

所有的请求默认都是GET

POST

  • 采用实体内容传参
  • 参数在传递过程中不可见,隐私性好
  • 实体内容专门用来传输数据,大小没有限制

在form上加"method = post"

如何配置Servlet访问路径

  • 1)精确匹配
    • 例如:/abc
    • 只有/abc才能访问他
    • 此Servlet只能处理这一个请求

    适合规模较小的项目

  • 2)通配符
    • 举例:/*
    • 所有路径都能访问此Servlet

    适合一个项目只写一个Servlet

  • 3)后缀
    • 举例:*.hi
    • 所有以hi为后缀的请求都可以访问此Servlet
    • 此Servlet能处理多个请求

    适合一个项目写少量几个Servlet

在这里插入图片描述

转换接收乱码问题

1.get/post

  • 将乱码后的字符串按照ISO-8859-1还原为byte
  • 再将byte按照UTF-8编码为字符串
  • 优点:万能 缺点:麻烦
    在这里插入图片描述

2.get

  • 修改tomcat配置文件
  • 在server.xml第65行,加URIEncoding = “utf-8”
  • 优点:简单 缺点:只对get有效
    在这里插入图片描述

3.post

  • 在接收参数之前,加req.setCharacterEncoding(“utf-8”);
  • 声明实体内容编码为utf-8
  • 优点:简单 缺点:只对post有效

发送乱码解决

  • res.setCharacterEncoding(“utf-8”);/res.setContentType(“text/html;charset=utf-8”);

Servlet的声明周期

  • 1.启动tomcat ,new 实例化servlet
  • 2.初始化Servlet
  • 3.调用时使用它
  • 4.shotdowm调用destory()关闭他
  • 默认首次访问Servlet时,tomcat会实例化他
  • 可以改为启动tomcat时就实例化他
  • 第1,2,4步只执行一次,所以某个Servlet是单例
  • 第三步可以执行多次,每次请求调用
  • 当需求规定在什么时候做什么处理时,开发者好知道在什么地方写代码

ServletConfig和ServletContext

1.他们的作用

  • 可以使用web.xml做配置文件,预置参数,使用config和context来读取

2.他们的区别

1)Context

  • 和Servlet是一对多的关系,Tomcat在启动时就创建唯一一个Context,所有Servlet都可以共享这个对象中的数据,如果想给多个Servlet预置数据,使用Context

2)Config

  • 和Servlet是一对一关系,Tomcat在初始化每个Servlet之前会给他创建一个Config
  • 如果想某个Servlet预置数据,使用config

3.它们的用法

1)config

  • 假设要开发一个网页游戏,用户超出最大在线人数时要排队,登录时判断是否已经达到最大人数
  • 登录:LoginServlet
  • 最大人数:MaxOnline,可以配置
  • 该参数值只给LoginServlet自己用,用Config读即可
    在这里插入图片描述
    在这里插入图片描述

2)context

  • 软件内有很多查询功能,都带有分页,每页显示的行数size是常量,而且可配置,该数据在多个查询数据之间公用,使用context读取
    在这里插入图片描述
    在这里插入图片描述

Context的特殊用法

  • 前提:之前使用config和context读取的是常量
  • 而context还有能力读取变量
  • 用该对象读写的变量是可以被所有Servlet对象公用的
  • setAttribute()/getAttribute()
    在这里插入图片描述

总结config和context

  • 当需要给Servlet预置参数时使用这样的对象
  • 若参数只给一个Servlet使用,用config
  • 若参数给多个Servlet使用,用Context
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值