Java Web开发必备技能:Servlet与JSP,搞定Web应用的基础与进阶!

举报
喵手 发表于 2025/09/24 21:44:37 2025/09/24
【摘要】 开篇语哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,...

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

如果你已经在学习Java,那么你一定会接触到Java Web开发。在Web应用开发中,ServletJSP无疑是两个最重要的技术。无论是简单的动态网页展示,还是复杂的Web应用,它们都是必不可少的组成部分。

在这篇文章中,我将带你深入了解Servlet的生命周期与请求处理,掌握JSP与EL表达式的用法,了解如何管理Session与Cookie,最后,我们将介绍如何基于Servlet实现MVC模式。通过这篇文章,你将为成为一名合格的Java Web开发者奠定坚实的基础!


目录:

  1. Servlet生命周期与请求处理
  2. JSP(Java Server Pages)与EL表达式
  3. Session与Cookie管理
  4. 基于Servlet的MVC模式

1. Servlet生命周期与请求处理

Servlet是Java Web开发中的核心技术之一,它主要用于处理客户端请求并生成响应。理解Servlet的生命周期和请求处理流程,是开发Java Web应用的基础。

1.1 Servlet的生命周期

Servlet的生命周期主要包括三个阶段:加载、初始化、请求处理销毁。Servlet容器(如Tomcat)负责管理Servlet的生命周期,下面是生命周期的详细介绍:

  1. 加载与初始化
    当Servlet容器首次启动或者第一次接收到请求时,它会加载Servlet类并调用init()方法来初始化Servlet。init()方法只会执行一次,用于初始化Servlet的资源。

    public class MyServlet extends HttpServlet {
        @Override
        public void init() throws ServletException {
            System.out.println("Servlet 初始化...");
        }
    }
    
  2. 请求处理
    每次客户端发送请求时,Servlet容器会调用service()方法来处理请求。service()方法会根据请求类型(如GETPOST)调用相应的doGet()doPost()方法。

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().println("Hello, World!");
    }
    
  3. 销毁
    当Servlet容器关闭或Servlet被卸载时,它会调用destroy()方法,释放资源。

    @Override
    public void destroy() {
        System.out.println("Servlet 销毁...");
    }
    

1.2 请求处理流程

Servlet的请求处理流程是:客户端发送HTTP请求 -> Servlet容器接收请求并分发到指定的Servlet -> Servlet处理请求并生成响应 -> Servlet容器将响应返回给客户端。


2. JSP(Java Server Pages)与EL表达式

JSP(Java Server Pages)是一种动态网页技术,它可以通过嵌入Java代码来生成动态内容。与Servlet相比,JSP的最大优势在于它可以更加简洁地处理HTML与Java代码的分离,便于开发和维护。

2.1 JSP页面基础

一个典型的JSP页面包含静态内容(如HTML)和动态内容(通过JSP标签或Java代码输出的内容)。下面是一个简单的JSP页面示例:

<%@ page language="java" contentType="text/html; charset=GB2312"%>
<html>
<head><title>欢迎使用JSP</title></head>
<body>
    <h1>欢迎访问我的网站!</h1>
    <p>当前时间:<%= new java.util.Date() %></p> <!-- Java代码插入 -->
</body>
</html>

在这个例子中,我们通过<%= %>标签嵌入了Java代码,生成了当前的时间。

2.2 EL(Expression Language)表达式

EL表达式是JSP中的一种轻量级表达式语言,它允许你直接在JSP页面中访问Java对象的属性,而无需嵌入复杂的Java代码。EL表达式的语法非常简洁,通常用于从JSP页面中访问请求参数、Session、Application对象等。

EL的基本语法是:${},例如:

<h1>用户:${user.name}</h1>

假设user是一个JavaBean对象,EL会自动从user对象中获取name属性的值并显示。

2.3 EL表达式的常见用途

  • 访问请求参数:

    <p>用户名: ${param.username}</p>
    
  • 访问Session属性:

    <p>用户信息: ${sessionScope.user}</p>
    
  • 访问Application属性:

    <p>网站名称: ${applicationScope.siteName}</p>
    

3. Session与Cookie管理

在Web应用中,Session与Cookie是常用的状态管理工具,用于在客户端和服务器之间保持会话状态。

3.1 Cookie管理

Cookie是由服务器发送到客户端并保存在客户端浏览器中的小文件,常用于存储用户信息和跟踪用户行为。我们可以使用HttpServletResponseaddCookie()方法来设置Cookie。

Cookie cookie = new Cookie("username", "JohnDoe");
cookie.setMaxAge(60*60);  // 设置Cookie的存活时间为1小时
response.addCookie(cookie);

客户端可以通过HttpServletRequestgetCookies()方法来获取所有的Cookie。

Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
    if ("username".equals(cookie.getName())) {
        String username = cookie.getValue();
        System.out.println("用户名:" + username);
    }
}

3.2 Session管理

Session是服务器端存储的会话信息,用于在多个请求之间保存用户的状态。Session会话由HttpSession对象管理,每个客户端都有一个唯一的Session ID。你可以通过request.getSession()方法来获取Session。

HttpSession session = request.getSession();
session.setAttribute("username", "JohnDoe");

然后,在后续的请求中,用户的信息会被自动存储在Session中。

String username = (String) session.getAttribute("username");
System.out.println("用户名:" + username);

4. 基于Servlet的MVC模式

MVC模式(Model-View-Controller)是一种常见的设计模式,广泛应用于Web开发中,它将Web应用分为三个部分:Model(模型)View(视图)Controller(控制器)

4.1 Servlet实现MVC模式

在基于Servlet的Web应用中,我们通常使用Servlet作为Controller,负责处理请求并返回响应。Model通常是Java类,用来处理业务逻辑和数据,View则是JSP页面,负责显示数据。

  1. Model:负责业务逻辑和数据处理,例如从数据库中获取数据。

  2. View:负责展示用户界面,通常是JSP页面。

  3. Controller:Servlet负责接收客户端请求,并调用Model进行处理,最后将处理结果传递给View进行展示。

4.2 基本实现示例

假设我们要实现一个简单的用户登录功能:

  1. Servlet (Controller):处理用户的登录请求。
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if ("admin".equals(username) && "password123".equals(password)) {
            request.setAttribute("message", "登录成功!");
            request.getRequestDispatcher("/welcome.jsp").forward(request, response);
        } else {
            request.setAttribute("message", "用户名或密码错误!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }
}
  1. JSP (View):展示登录页面和欢迎页面。

login.jsp

<form action="login" method="post">
    用户名:<input type="text" name="username">
    密码:<input type="password" name="password">
    <button type="submit">登录</button>
</form>

welcome.jsp

<h1>${message}</h1>

在这个例子中,LoginServlet作为控制器,负责处理登录逻辑,验证用户输入,并将结果转发给相应的JSP页面进行展示。


总结

通过这篇文章,我们深入了解了Java Web开发中的核心技术——ServletJSP。我们探讨了Servlet的生命周期和请求处理流程,掌握了JSP与EL表达式的使用,学习了如何管理Session与Cookie,并实现了基于Servlet的MVC模式。

这些知识是你成为一名优秀Java Web开发者的基石。如果你对Web开发充满兴趣,继续深入学习这些技术,并在实际项目中灵活运用,你一定能够开发出高效、可维护的Web应用!🚀

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。


版权声明:本文由作者原创,转载请注明出处,谢谢支持!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。