Java后端学习系列(7):常用Java Web框架介绍(Servlet与JSP)

JavaWeb——Servlet(全网最详细教程) JavaWeb技术之Servlet 阅读详情

Java后端学习系列(7):常用Java Web框架介绍(Servlet与JSP)

前言

经过前面对于Java数据库操作基础(JDBC)的学习,我们已经能够让Java程序与数据库进行有效的交互了。而在构建动态的Web应用程序方面,Servlet与JSP是Java Web开发中非常重要的基础技术,它们为开发功能丰富、交互性强的网页应用提供了关键支撑。本期我们就来深入了解Servlet与JSP的相关知识,进一步拓展Java后端开发的技能树。本系列共15期,会持续为大家呈现实用且关键的内容。

一、Servlet的基本概念与开发流程

1.1 基本概念

Servlet是运行在Web服务器或应用服务器上的Java小程序,它用于处理客户端发来的HTTP请求,并生成相应的HTTP响应返回给客户端。可以把Servlet看作是服务器端的控制器,负责接收请求、执行业务逻辑、调用相关的服务(如数据库操作等),最后生成响应内容,比如HTML页面、JSON数据等。

1.2 开发流程

  1. 创建Servlet类:
    首先需要创建一个Java类继承自javax.servlet.http.HttpServlet类,并重写doGet和doPost等方法,这些方法对应不同类型的HTTP请求方法(GET、POST等)。示例如下:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>Hello from Servlet!</h1>");
        out.println("</body></html>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 这里可以添加处理POST请求的逻辑,和doGet类似,先设置响应类型等操作
        doGet(request, response);
    }
}
  1. 配置Servlet:
    需要在项目的web.xml文件(传统的配置方式,现在也有基于注解的配置方式)中对Servlet进行配置,告诉服务器这个Servlet的访问路径等信息。例如:
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

通过这样的配置,当客户端访问/hello这个路径时,服务器就会调用对应的HelloServlet来处理请求。

二、JSP的原理与基本应用

2.1 原理

JSP(JavaServer Pages)本质上是一种在HTML页面中嵌入Java代码的技术,它的运行原理是:当客户端第一次请求一个JSP页面时,服务器会将JSP页面翻译成一个Servlet类(这个过程由服务器自动完成),然后编译这个Servlet类并加载到内存中执行,后续再次请求该JSP页面时,就直接执行内存中已经编译好的Servlet实例,生成响应返回给客户端。

2.2 基本应用

创建一个简单的JSP页面示例,例如:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>My JSP Page</title>
</head>
<body>
    <%
        int num = 10;
        out.println("<h1>The number is: " + num + "</h1>");
    %>
</body>
</html>

在这个JSP页面中,通过<% %>标签嵌入了Java代码,实现了在HTML页面中动态输出内容的功能。还可以使用JSP的指令(如<%@ page %>用于设置页面相关属性)、表达式(<%= 表达式 %>可以直接输出表达式的值到页面)等元素来丰富页面的功能和逻辑。

三、Servlet与JSP的结合使用

在实际的Web应用开发中,常常会结合Servlet与JSP来构建完整的应用逻辑。一般的做法是:Servlet负责接收客户端请求,进行业务逻辑处理(比如调用数据库操作、验证用户身份等),然后将处理结果存放在请求对象(HttpServletRequest)或者会话对象(HttpSession)中,再通过请求转发或者重定向的方式将请求引导到相应的JSP页面,由JSP页面负责展示最终的结果给客户端。

例如,有一个简单的用户登录功能:

  • LoginServlet(部分代码示例):
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 假设这里获取用户提交的用户名和密码,进行验证(这里简化验证逻辑)
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if ("admin".equals(username) && "123456".equals(password)) {
            // 验证通过,将用户信息存入会话
            request.getSession().setAttribute("user", username);
            // 请求转发到欢迎页面(假设是welcome.jsp)
            request.getRequestDispatcher("welcome.jsp").forward(request, response);
        } else {
            // 验证失败,重定向到登录页面重新登录
            response.sendRedirect("login.jsp");
        }
    }
}
  • welcome.jsp(部分代码示例):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome Page</title>
</head>
<body>
    <%
        String username = (String) session.getAttribute("user");
        if (username!= null) {
            out.println("<h1>Welcome, " + username + "!</h1>");
        } else {
            out.println("<h1>You are not logged in!</h1>");
        }
    %>
</body>
</html>

通过这样的结合,实现了从接收请求、处理业务逻辑到展示结果的完整流程,构建出一个简单的具有交互功能的Web应用部分。

四、简单的Java Web应用示例

下面我们来构建一个更完整一点的简单Java Web应用示例,实现一个简单的图书列表展示功能:

  1. 创建Book类(用于表示图书实体):
public class Book {
    private String title;
    private String author;
    private double price;

    public Book(String title, String author, double price) {
        this.title = title;
        this.author = author;
        this.price = price;
    }

    public String getTitle() {
        return title;
    }

    public String getAuthor() {
        return author;
    }

    public double getPrice() {
        return price;
    }
}
  1. 创建BookServlet(用于获取图书列表并传递给JSP页面展示):
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class BookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Book> bookList = new ArrayList<>();
        bookList.add(new Book("Java编程思想", "Bruce Eckel", 99.0));
        bookList.add(new Book("Effective Java", "Joshua Bloch", 88.0));
        request.setAttribute("bookList", bookList);
        request.getRequestDispatcher("bookList.jsp").forward(request, response);
    }
}
  1. 创建bookList.jsp(用于展示图书列表):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Book List</title>
</head>
<body>
    <h1>Book List</h1>
    <ul>
        <%
            List<Book> bookList = (List<Book>) request.getAttribute("bookList");
            if (bookList!= null) {
                for (Book book : bookList) {
                    out.println("<li>Title: " + book.getTitle() + ", Author: " + book.getAuthor() + ", Price: " + book.getPrice() + "</li>");
                }
            }
        %>
    </ul>
</body>
</html>

然后按照前面介绍的配置Servlet的方式,在web.xml文件中配置好BookServlet的访问路径等信息,这样当客户端访问相应路径时,就能看到展示的图书列表了。

五、下一步学习建议

  1. 项目实践:基于Servlet与JSP搭建更多功能的Web应用,比如增加用户注册、图书添加删除等功能,深入体会它们在实际项目中的应用以及如何处理各种复杂的业务逻辑和页面交互。
  2. 深入学习:进一步研究Servlet与JSP的高级特性,比如Servlet的过滤器(Filter)和监听器(Listener)的作用及使用场景,JSP的自定义标签等,拓宽开发技能。
  3. 框架对比:了解一些基于Servlet与JSP发展而来的更高级的Java Web框架(如Spring MVC等),对比它们与Servlet、JSP原生开发的优缺点,为后续学习更高效的开发框架做准备。

下期预告

《Java后端学习系列(8):Spring框架基础入门》

  • Spring的基本概念与核心模块介绍
  • Spring IoC(控制反转)原理与实践
  • Spring AOP(面向切面编程)的基础应用
  • 简单的Spring应用示例搭建

Servlet与JSP是Java Web开发的重要基石,希望大家通过不断实践和探索,熟练掌握它们的使用方法,在Web应用开发领域不断进步。如果在学习过程中有任何疑问或者心得,欢迎在评论区分享交流,我们下期再见。

java学习总结:JSP、Servlet Servlet运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端的请求、响应动态资源给浏览器JSP本质是Servlet实现步骤:1、创建类继承HttpServlet2、覆盖未实现的方法--service方法。 阅读详情

相关推荐

Java动态web--jsp页面调用servlet(doPost)

环境:eclipse Mars 1、新建Dynamic web 2、新建jsp页面,编码: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%> hive查询语句 查询语句: 3、新建servlet package com.kua

nma_123456的专栏 1万+

jsp技术

1.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口 的init(),service()和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 web容器加...

weixin_48070447的博客 908

Java Web开发:Servlet与JSP技术

Servlet是Java编写的服务器端程序,用于处理客户端请求并生成响应。Servlet运行在Servlet容器中,如Apache Tomcat。JSP是一种基于Java的服务器端技术,允许在HTML中嵌入Java代码,用于生成动态Web页面。JSP页面在第一次请求时被编译成Servlet。Servlet和JSP是Java Web开发中的两种核心技术,它们各自具有优缺点,适用于不同的场景。通过合理的组合和使用,可以构建出高效、可维护的Web应用。

shejizuopin的博客 917

JSP与Servlet

Servlet 可以看作是在服务器上运行的小程序,一个页面处理程序。

qq_31856061的博客 3336

Java Web之JSP与Servlet的区别

      Servlet程序的运行原理如下图所示,当客户端提交请求时,Web服务器接收到这个请求,就将该请求交给Servlet引擎来处理。当Servlet引擎找到该请求指定的Servlet时,就会调用Servlet类中的service方法,并将请求信息和响应信息传入service方法(返回相应的客户端代码,如HTML、JavaScript等)。      Servlet虽然可以实现全部动态Web...

样young的博客 3690

Java后端开发完整教程:框架与实战应用

本文还有配套的精品资源,点击获取 简介:Java后端技术是网站后台构建的核心,涉及请求处理、业务逻辑和数据返回。本教程将深入分析Java后端的关键技术和常用框架,如Servlet、JSP、JavaEE、Spring Framework、Spring MVC、Struts2等,以及MVC设计模式。同时探讨ORM框架如Hibernate和MyBatis,用户认证的安全框架如Sp...

weixin_35370061的博客 3723

java框架002——jsp(本质也是servlet)

一、JSP简介 1。JSP用于简化Servlet编写。JSP是一种实现普通静态HTML和动态内容混合编码的技术。 2。JSP只需对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写。 3。JSP设计的目的在于简化表示层的表示。 4。JSP页面的访问路径与普通HTML页面的访问路径形式完全一样。 5。JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件,JSP 页面的文件扩展名必须为.jsp。 6。在JSP页面中编写的Java代码需要

weixin_45084986的博客 4003

Java Web开发实战:JSP、Servlet、MySQL与Tomcat流程指南

Java Web开发是指利用Java技术开发基于Web的应用程序,它包括动态网页设计、服务器端编程、数据库交互等。Java Web技术的核心是利用Java语言编写服务器端应用程序,提供与客户端的动态交互功能。Java Web应用程序通常运行在Web服务器或应用服务器上,如Tomcat、Jetty、WebLogic和WebSphere等。使用Java开发Web应用的优势在于其跨平台性、强大的社区支持和丰富的类库。

weixin_28809949的博客 1141

Java web 开发常用的框架详解

Spring是Java开发中最流行的企业级框架之一。它提供了全面的基础设施支持,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问等。Spring框架的核心是Spring IoC容器,它管理对象的生命周期和配置。

Itmastergo的博客 1万+

基于JSP与Servlet的Java Web项目实战

每一个合法的web.xml文件都必须以<web-app>为根元素。该元素不仅标识了文档类型,还决定了所遵循的Java EE/Servelt规范版本。不同版本对应不同的文档类型定义(DTD)或XML Schema(XSD),直接影响可用标签集合及语义规则。早期版本使用基于 DTD 的声明方式:<web-app>-- 配置内容 --></web-app>而从 Servlet 2.4 开始,推荐使用基于 XML Schema 的命名空间方式,更加严谨且支持扩展性:-- 配置内容 -->

weixin_34438187的博客 1068

免疫治疗新思路:用COMPASS算法挖掘单细胞数据中的代谢靶点(含差异分析技巧)

本文介绍了如何利用COMPASS算法从单细胞转录组数据中系统推断免疫细胞的代谢活性,为肿瘤免疫治疗提供新的靶点发现思路。文章详细阐述了COMPASS结合流平衡分析的核心原理,并提供了从差异分析到可成药性评估的完整转化路径,旨在帮助研究者精准定位代谢弱点,开发新型免疫代谢疗法。

weixin_29275257的博客 367

轻松理解Servlet、JSP与MVC架构

Servlet是Java Web技术中的一种用于处理客户端请求的服务器端程序。它是基于Java技术实现的,能够与Web服务器进行交互,接收HTTP请求,处理请求并返回响应给客户端。Servlet是一种典型的基于事件的编程,主要处理逻辑通常集中在doGet和doPost方法中。JSP(Java Server Pages)是一种动态网页技术,允许在HTML中嵌入Java代码片段,实现动态内容的生成。与Servlet相比,JSP页面更便于开发者编写和维护,因为它将程序逻辑与页面显示分离。

m88997766的博客 1660

AD2428与SigmaStudio:从节点自动配置与EEPROM存储实战

本文详细介绍了AD2428 A2B收发器与SigmaStudio开发环境的集成应用,重点讲解从节点自动配置与EEPROM存储的实战流程。通过硬件连接、属性配置、数据导出及嵌入式系统集成等步骤,实现设备上电自启动,提升汽车音频系统的可靠性与部署效率。

g8f9d0s1a2的博客 650

Java Web 学习笔记:Servlet/JSP 核心原理与避坑指南

整理这份笔记的初衷很简单:我在学习 Java Web 时,发现很多教程要么只讲理论,要么直接上 Spring 框架,对 Servlet/JSP 这些底层机制的解释总是一笔带过。于是决定边学边记录,用最直白的语言+图示梳理核心知识点。

2301_77129242的博客 3023

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

基于大语言模型的多轮对话系统优化研究

基于大语言模型的多轮对话系统优化研究 摘要 本研究针对大语言模型在多轮对话场景中的性能衰减问题,提出了一套系统优化方案。通过分层存储架构(短期记忆层、中期摘要层、长期知识层)和混合检索策略优化上下文管理,设计动态槽位填充框架增强对话状态跟踪,引入熵引导的重置算法改进生成策略,并采用双路径加载架构突破I/O瓶颈。实验表明,该方案使任务完成率提升28.6%,响应一致性提高41.2%,推理延迟降低35.8%,为构建高性能智能对话系统提供了实用技术路径。 关键词:大语言模型;多轮对话;上下文管理;状态跟踪~~~~~

huanghm88的专栏 663

Java Web开发基础——Servlet与JSP基础

在本节中,我们将深入探讨Java Web开发中的两个核心技术:Servlet和JSP(Java Server Pages)。这两者是Java Web应用程序的基础,理解它们的工作原理、生命周期以及如何高效地使用它们,对于开发者来说至关重要。JSP是Servlet的扩展,通过简化动态内容生成的过程,开发者可以专注于编写逻辑,而无需编写大量的Servlet代码。接下来,我们将通过创建和部署一个简单的Servlet应用程序,演示如何配置Servlet和处理HTTP请求。,您将看到Servlet返回的网页。

好看资源网的博客 1700

《无线传感网络 matlab》:从入门到实践

这就是如何使用Matlab建立一个简单的无线传感网络并进行仿真的方法。当然,这只是一个入门级的示例,真正的无线传感网络可能会更加复杂和庞大。首先,我们需要创建一个无线传感网络的基础结构。接下来,我们需要定义一个数据包的格式,以便节点之间可以交换信息。无线传感网络是一种由无线传感器节点组成的、自组织的网络。现在,我们可以开始编写节点代码了。我们将使用Matlab提供的工具箱来构建一个简单的无线传感网络,并对其进行仿真和分析。现在,我们可以将这个节点复制9次,以创建一个包含10个节点的无线传感网络。

NoerrorCode的博客 296

Java Web开发的基石:深入理解Servlet与JSP​

本文深入解析Java Web开发的基石——Servlet与JSP技术。Servlet作为后台业务处理器,通过Java代码接收和响应HTTP请求;JSP则是将Java嵌入HTML的动态页面技术,两者共同构成了早期Java Web应用的核心。文章详细阐述了两者的工作原理、代码示例及协作模式,指出其形成的MVC雏形为现代框架奠定了基础。虽然当前主流技术已转向Spring等框架,但理解Servlet和JSP对掌握Web开发本质、维护传统系统仍具重要意义。这组黄金搭档展现了Java Web技术的历史演进,是开发者必须

Sagittarius_A*的博客 1106

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

Ambari 安装部署教程(手把手教学)【超级详细】

本文为读者提供了一套超详细的 Apache Ambari 安装部署教程,采用手把手教学方式,适合初学者及大数据运维人员。内容涵盖前期准备、环境配置、Ambari Server 与 Agent 安装、集群初始化配置、常见问题排查等全流程操作,确保用户能够顺利搭建稳定的 Hadoop 大数据平台管理系统。

Five的博客 1万+

Java Web(Servlet和JSP)

1. Servlet与JSP 1.1 页面请求工作流程 基本页面访问请求的处理流程 1.用户通过浏览器输入连接地址请求所需的资源 2.浏览器接收用户的请求,将请求组成指定的格式发送到服务器端,客户端与服务器端之间通过HTTP完成具体的交互。请求的数据流中主要包含HTTP、请求方法(post、get)、请求的网址、请求一些参数。 3.服务器接收到客户端发来的请求,查找用户所需要的资源 4.服务器查找到用户请求的资源后,将资源返回客户端 5.服务器通过将响应消息组装成特定的消息格式返回给客户端,响应数据流主要

qq_33700236的博客 3294

【UE5】RTS游戏的框选功能+行军线效果实现

步骤: 一、项目准备; 二、框选NPC并移动到指定地点; 三、框选效果; 四、行军线效果

ChaoChao66666的博客 2379

java框架 - Servlet基础框架

一,servlet定义 Servlet(Server Applet)是JavaServlet的简称,称为服务器端小程序、小服务程序或服务连接器,是一种使用 Java 语言来开发动态网站的技术(用Java编写的服务器端程序),具有独立于平台和协议的特性,Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写...

zs1972551648的博客 6099

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java EE之Servlet、JSP学习

这个学期开了Java EE的课程,借此机会好好的自学了下Java EE。写几篇博客记录下自己遇到的问题、学习过程。希望能帮到有需要的人,也能供自己日后查阅。文章中有错误之处,还请大家指正,共同进步。参考了很多大牛的博客文章,很是感谢。 使用的一些工具如下:     开发工具:Eclipse neon     服务器:Tomcat 8.5     数据库:MySQL 5.6.17   

Umbrella_J 2765

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java web——servlet+jsp实现前后台交互

大学生涯终于结束,在公司学习了一段时间的java web方面的知识,结合自己之前的一些理解,想通过几篇文章来对我所接触到的java技术进行梳理与总结,也希望能给大家一些参考,由于作者水平有限,难免存在一些不足之处,希望能一起探讨!

梦在当下的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

上一篇: Java后端学习系列(6):Java数据库操作基础(JDBC)
下一篇: Java后端学习系列(8):Spring框架基础入门
DoYangTan
博客等级 码龄5年 1946粉丝 319原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值