Java web基础知识

一、Servlet 相关

  1. 什么是 Servlet?它是怎么工作的?
  • Servlet 就是一个“专门处理 HTTP 请求的 Java 类”。你把它想象成 餐厅的前台服务员:顾客(浏览器)点菜(发送请求),服务员把菜单递给后厨(调用你的业务代码),再把做好的菜端回给顾客(返回响应)。
  • 工作流程:
    • 你在浏览器输入网址,比如 http://localhost:8080/myapp/login
    • Web 容器(比如 Tomcat)找到对应的 Servlet(比如 LoginServlet
    • 容器调用 Servlet 的 service() 方法,它再根据 GET/POST 调用 doGet()doPost()
    • 你在这些方法里写逻辑:取参数、查数据库、返回结果(HTML 或 JSON)
  1. Servlet 的生命周期(从生到死)
  • 出生(加载和实例化):服务器启动时或第一次访问时,容器创建 Servlet 对象(调用构造方法)。
  • 初始化(init):只执行一次,用来加载配置、建立数据库连接等。好比“岗前培训”。
  • 服务(servicedoGet/doPost):每次请求都执行,处理具体业务。就像每天上班干活。
  • 销毁(destroy):服务器关闭或应用卸载时调用,用来释放资源(关连接等)。好比“退休交接”。
  1. Servlet 是单例吗?线程安全吗?
  • 是单例:整个应用只有一个 Servlet 实例。
  • 线程不安全:因为多个请求会同时调用同一个 Servlet 实例的 service 方法(每个请求一个线程),如果 Servlet 里有可变的成员变量,多线程修改就会出问题。
  • 解决办法:
    • 尽量不用成员变量,用局部变量(每个请求独一份)。
    • 如果必须用,加 synchronized 同步锁(但会影响性能)。
    • 实现 SingleThreadModel 接口(已废弃,不推荐)。

4. doGetdoPost 的区别?

对比doGetdoPost
请求方式GETPOST
参数位置URL 后面(?name=张三)请求体里(看不见)
长度限制有(浏览器/服务器限制,一般 2~8KB)无限制(可以传文件)
安全性低(参数暴露在地址栏)
使用场景查询数据、获取页面提交表单、上传文件、修改数据

二、转发(Forward)与重定向(Redirect)

  1. 转发和重定向有什么区别?(必考题)
对比转发(forward)重定向(sendRedirect)
发生位置服务器内部浏览器(客户端)
地址栏不变变成新地址
请求次数1 次2 次(第一次返回 302,第二次访问新地址)
能否共享 request 数据能(同一请求对象)不能(两次不同请求)
代码示例request.getRequestDispatcher(“/target”).forward(req, resp);response.sendRedirect(“/target”);
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇