You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用Servlet通过Java获取JSP文件中的元素(如title值)

不用Servlet,如何用Java提取JSP文件中的HTML元素?

核心思路

JSP本质是包含HTML标签的文本文件,直接读取文件内容后,用HTML解析库提取元素是最可靠的方案,能避免正则表达式处理HTML时的各种边界问题。


方法一:使用Jsoup解析库(推荐)

Jsoup是专门处理HTML/XML的Java库,可轻松解析标签结构并提取内容。

步骤:

  1. 引入Jsoup依赖(Maven项目添加到pom.xml):
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version> <!-- 使用最新稳定版本 -->
</dependency>
  1. 编写Java代码读取JSP文件并提取目标元素:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.File;
import java.io.IOException;

public class JspElementExtractor {
    public static void main(String[] args) {
        // 替换为你的JSP文件实际路径
        File jspFile = new File("src/main/webapp/myData.jsp");
        
        try {
            // 解析JSP文件,自动处理HTML结构
            Document doc = Jsoup.parse(jspFile, "UTF-8");
            
            // 获取title标签文本
            String titleText = doc.title();
            System.out.println("Title标签值:" + titleText);
            
            // 额外示例:提取h1标签内容
            String h1Text = doc.select("h1").first().text();
            System.out.println("H1标签值:" + h1Text);
            
            // 提取所有复选框的value属性
            doc.select("input[type=checkbox]").forEach(input -> {
                System.out.println("复选框Value:" + input.attr("value"));
            });
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法二:使用正则表达式(不推荐,仅适用于简单场景)

如果不想引入第三方库,可尝试用正则匹配,但HTML结构一旦变化(比如标签换行、带属性),正则很容易失效。

示例代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexJspExtractor {
    public static void main(String[] args) {
        StringBuilder jspContent = new StringBuilder();
        String line;
        
        try (BufferedReader reader = new BufferedReader(new FileReader("src/main/webapp/myData.jsp"))) {
            while ((line = reader.readLine()) != null) {
                jspContent.append(line);
            }
            
            // 匹配title标签的正则
            Pattern titlePattern = Pattern.compile("<title>(.*?)</title>", Pattern.CASE_INSENSITIVE);
            Matcher matcher = titlePattern.matcher(jspContent.toString());
            
            if (matcher.find()) {
                System.out.println("Title标签值:" + matcher.group(1).trim());
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 若JSP文件包含<% ... %>这类Java代码片段,Jsoup会将其视为普通文本,如需过滤,可在解析前先移除这类代码块。
  • 优先使用Jsoup这类专业解析库,正则仅适合临时、结构简单的HTML提取场景。

内容的提问来源于stack exchange,提问作者Davron Bafoyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:17:17