(✪▽✪)曼波~~~~!欢迎来到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生命周期(超重要!)
- 出生:
init()
→ 容器启动时调用一次 - 工作:
service()
→ 每次请求都调用 - 退休:
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); // 存sessionresponse.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是单例多线程的!
- 实例变量会有线程安全问题
- 解决方法:
- 使用局部变量
- 同步代码块
- 避免使用实例变量
🚀 第⑧章 学习路线建议
- 先掌握Servlet基础生命周期
- 熟悉请求响应对象操作
- 学习JSP与Servlet配合
- 深入Filter和Listener
- 最终过渡到Spring MVC
曼波小贴士:推荐使用Tomcat 9+作为练习服务器,用IDEA社区版就能轻松创建Web项目啦!(≧∇≦)ノ
试着写一个记录访问次数的Servlet吧~ 遇到问题随时召唤曼波哦!(✪ω✪) 记得Servlet就像Web开发的乐高积木,组合起来能创造无限可能!✨