Java后端Day2:Servlet与请求处理

62 阅读2分钟

1. 回顾第一天

  • 快速回顾环境搭建
  • 演示一个简单的输出"Hello JueJin!"

2. Servlet核心知识

  • Servlet生命周期
    init() → service() → destroy() 的调用时机

  • 创建Servlet的两种方式

    java

    // 方式一:实现Servlet接口
    public class MyServlet implements Servlet { ... }
    
    // 方式二:继承HttpServlet(更常用)
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
            resp.getWriter().write("GET请求处理");
        }
    }
    
  • web.xml配置 vs 注解配置

    xml

    <!-- web.xml配置示例 -->
    <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>com.example.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    

    运行 HTML

    java

    // 注解配置(Servlet 3.0+)
    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet { ... }
    

3. 处理HTTP请求

  • GET vs POST请求的区别

    • GET:参数在URL可见,有长度限制,用于获取数据
    • POST:参数在请求体,更安全,用于提交数据
  • 获取请求参数

    java

    String username = req.getParameter("username");
    String[] hobbies = req.getParameterValues("hobby");
    
  • 响应输出

    java

    resp.setContentType("text/html;charset=utf-8"); // 解决中文乱码
    PrintWriter out = resp.getWriter();
    out.println("<h1>欢迎," + username + "!</h1>");
    

4. 初识JSP(可选)

  • JSP与Servlet的关系
    JSP最终会被编译为Servlet,适合混合HTML与Java代码

  • 简单示例:显示当前时间

    jsp

    <%@ page contentType="text/html;charset=UTF-8" %>
    <html>
    <body>
        <h2>当前时间: <%= new java.util.Date() %></h2>
    </body>
    </html>
    

5. 连接数据库(JDBC入门)

  • JDBC核心步骤

    1. 加载驱动:Class.forName("com.mysql.cj.jdbc.Driver");
    2. 建立连接:Connection conn = DriverManager.getConnection(url, user, password);
    3. 执行SQL:Statement 或 PreparedStatement
    4. 处理结果集:ResultSet
    5. 关闭资源
  • 防止SQL注入

    java

    String sql = "SELECT * FROM users WHERE username=? AND password=?";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, username);
    pstmt.setString(2, password);
    ResultSet rs = pstmt.executeQuery();
    

6. 实战:MVC模式初体验

  • MVC分层思想

    • Model:数据层(如User类、DAO操作)
    • View:视图层(JSP/HTML)
    • Controller:控制层(Servlet处理请求)
  • 实现用户登录功能

    1. Servlet接收表单参数
    2. DAO层查询数据库验证用户
    3. 返回登录成功/失败的页面

7. 总结与预告

  • 今日重点
    Servlet生命周期、请求处理、JDBC基础、MVC分层

Tips

  • 遇到问题善用Debug工具(IDEA断点调试)
  • 推荐阅读:《Head First Servlets and JSP》