【JAVA】Java高级:Spring框架与Java EE—Web开发基础(Servlet、JSP)

Java作为一种广泛使用的编程语言,提供了强大的Web开发框架和技术,其中Servlet和JSP(JavaServer Pages)是构建动态Web应用的基础。了解这些技术对于任何想要深入Java Web开发的程序员来说都是必不可少的。

一、Web开发的重要性
  1. 动态内容生成:与静态HTML页面不同,Web应用可以根据用户的输入或其他因素动态生成内容。例如,当用户在电商网站上搜索商品时,系统会根据搜索条件返回相应的商品列表。

  2. 用户交互:Web应用允许用户通过表单提交数据,进行交互,例如在线购物、社交媒体平台等。

  3. 可扩展性和维护性:Java的面向对象特性使得Web应用的开发更加模块化,便于维护和扩展。

  4. 跨平台性:Java的"编写一次,到处运行"特性使得Web应用可以在不同的操作系统和服务器上运行。

二、Servlet和JSP的基本概念
1. Servlet

Servlet是一个运行在服务器上的Java程序,负责处理客户端请求并生成响应。它是Java EE(Enterprise Edition)技术的一部分,能够扩展Web服务器的功能。

Servlet的工作流程

  • 客户端(通常是浏览器)发送HTTP请求到服务器。

  • 服务器接收到请求后,将其转发给相应的Servlet。

  • Servlet处理请求,执行必要的业务逻辑,并生成HTTP响应。

  • 服务器将响应返回给客户端。

Servlet的基本结构

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/hello") // 定义Servlet的URL映射
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        
        // 写入响应内容
        response.getWriter().println("<h1>Hello, World!</h1>");
    }
}

代码解释

  • @WebServlet("/hello"):这是Servlet的注解,定义了访问该Servlet的URL路径。

  • doGet方法:处理GET请求。在这个方法中,我们设置响应的内容类型为HTML,并输出一条简单的消息。

2. JSP(JavaServer Pages)

JSP是一种用于创建动态Web内容的技术,它允许开发者在HTML中嵌入Java代码。JSP文件在服务器上被编译成Servlet,从而处理请求。

JSP的基本结构

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Hello JSP</title>
</head>
<body>
<%
    // Java代码块
    String message = "Hello, JSP!";
%>
    <h1><%= message %></h1> <!-- 输出Java变量 -->
</body>
</html>

代码解释

  • <%@ page ... %>:页面指令,定义页面的基本属性。

  • <% ... %>:Java代码块,可以在其中编写任意Java代码。

  • <%= ... %>:表达式,直接输出Java表达式的结果。

三、Servlet和JSP的应用场景
  1. 用户登录系统:使用Servlet处理用户输入的登录信息,验证后返回不同的页面。

  2. 在线购物网站:使用JSP展示商品列表,Servlet处理购物车的添加和删除操作。

  3. 动态表单处理:通过Servlet接收用户提交的表单数据,并通过JSP展示处理结果。

四、构建一个简单的Web应用

下面我们将构建一个简单的Web应用,展示用户输入的姓名。

1. 项目结构
WebApp/
├── src/
│   ├── HelloServlet.java
├── WebContent/
│   ├── index.jsp
│   ├── web.xml
2. 创建Servlet

HelloServlet.java中创建一个处理用户输入的Servlet。

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/greet") // 定义Servlet的URL映射
public class HelloServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        // 获取用户输入的姓名
        String name = request.getParameter("name");
        
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        
        // 写入响应内容
        response.getWriter().println("<h1>Hello, " + name + "!</h1>");
    }
}
3. 创建JSP页面

index.jsp中创建一个简单的表单,允许用户输入姓名。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>User Greeting</title>
</head>
<body>
    <h1>Enter your name:</h1>
    <form action="greet" method="post">
        <input type="text" name="name" required />
        <input type="submit" value="Greet Me!" />
    </form>
</body>
</html>
4. 配置web.xml

web.xml中配置Servlet。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
          version="3.1">

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/greet</url-pattern>
    </servlet-mapping>
</web-app>
五、运行和测试
  1. 将项目部署到支持Servlet和JSP的Java EE服务器(如Apache Tomcat)。

  2. 访问index.jsp页面,输入姓名并提交表单。

  3. 服务器将调用HelloServlet,处理请求并返回个性化的问候信息。

六、总结

Servlet和JSP是Java Web开发的核心技术,能够帮助开发者创建动态和交互式的Web应用。通过本篇文章,我们了解了Servlet和JSP的基本概念、工作原理以及如何构建一个简单的Web应用。掌握这些基础知识是进一步学习Java Web框架(如Spring、JSF等)的基础。希望本文能够帮助您更好地理解Web开发的基础。

相关推荐
Code哈哈笑1 分钟前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
gb42152874 分钟前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶4 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
qq_433618447 分钟前
shell 编程(二)
开发语言·bash·shell
zfoo-framework12 分钟前
【jenkins插件】
java
风_流沙17 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
charlie11451419121 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满21 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He99928 分钟前
PHP中替换某个包或某个类
开发语言·php