JavaWeb开发基础知识-Servlet终极入门指南(曼波萌新版)

发布于:2025-04-03 ⋅ 阅读:(18) ⋅ 点赞:(0)

(✪▽✪)曼波~~~~!欢迎来到Servlet新手村!准备好开启Web开发的奇妙冒险了吗?让曼波用最有趣的方式带你飞~ 🚀

🌈 第①章 什么是Servlet?

// 本质就是一个Java类!
public class HelloServlet extends HttpServlet {
    // 专门处理HTTP请求的小管家
}
  • 官方定义:运行在服务器端的Java程序
  • 核心作用:接收请求 → 处理业务 → 返回响应
  • 生活比喻:就像餐厅的服务员(接单→后厨处理→上菜)

🛠️ 第②章 快速创建第一个Servlet

步骤1:创建类继承HttpServlet

@WebServlet("/hello") // 魔法注解!
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
        resp.getWriter().print("❤️ 曼波教你学Servlet!");
    }
}

步骤2:配置web.xml(传统方式)

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.mambo.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

🔄 第③章 Servlet生命周期(超重要!)

  1. 出生init() → 容器启动时调用一次
  2. 工作service() → 每次请求都调用
  3. 退休destroy() → 容器关闭时调用

 

📮 第④章 处理HTTP请求

GET请求处理

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    String name = request.getParameter("name"); // 获取URL参数
    // 处理逻辑...
}

POST请求处理

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    // 处理登录逻辑...
}

📦 第⑤章 请求与响应对象

HttpServletRequest 的百宝箱

// 获取各种信息
String clientIP = request.getRemoteAddr(); // 客户端IP
String header = request.getHeader("User-Agent"); // 浏览器信息
Cookie[] cookies = request.getCookies(); // 获取cookie

// 存取数据
request.setAttribute("data", myData); // 存数据
Object data = request.getAttribute("data"); // 取数据

HttpServletResponse 的魔法棒

// 设置响应
response.setContentType("text/html;charset=UTF-8"); // 内容类型
response.setStatus(404); // 设置状态码
response.sendRedirect("newPage.html"); // 重定向

// 写响应体
PrintWriter out = response.getWriter();
out.println("<h1>Hello World!</h1>");

🎯 第⑥章 实际应用场景

场景1:用户登录

String username = request.getParameter("username");
String password = request.getParameter("password");

if("admin".equals(username) && "123456".equals(password)){
    request.getSession().setAttribute("user", username); // 存session
    response.sendRedirect("welcome.jsp");
}else{
    response.sendError(401, "登录失败!");
}

场景2:文件下载

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"mambo.txt\"");

try(InputStream in = new FileInputStream("/path/to/file");
    OutputStream out = response.getOutputStream()) {
    byte[] buffer = new byte[4096];
    int length;
    while ((length = in.read(buffer)) > 0){
        out.write(buffer, 0, length);
    }
}

💡 第⑦章 常见问题解答

Q1:为什么我的Servlet返回乱码?

// 解决方案:统一设置编码
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");

Q2:如何保持用户状态?

// 使用Cookie
Cookie cookie = new Cookie("user", "mambo");
cookie.setMaxAge(3600); // 1小时有效期
response.addCookie(cookie);

// 使用Session
HttpSession session = request.getSession();
session.setAttribute("cart", shoppingCart);

Q3:Servlet是线程安全的吗?

⚠️ 注意:Servlet是单例多线程的!

  • 实例变量会有线程安全问题
  • 解决方法:
    • 使用局部变量
    • 同步代码块
    • 避免使用实例变量

🚀 第⑧章 学习路线建议

  1. 先掌握Servlet基础生命周期
  2. 熟悉请求响应对象操作
  3. 学习JSP与Servlet配合
  4. 深入Filter和Listener
  5. 最终过渡到Spring MVC

曼波小贴士:推荐使用Tomcat 9+作为练习服务器,用IDEA社区版就能轻松创建Web项目啦!(≧∇≦)ノ

试着写一个记录访问次数的Servlet吧~ 遇到问题随时召唤曼波哦!(✪ω✪) 记得Servlet就像Web开发的乐高积木,组合起来能创造无限可能!✨