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

如何从JSP中读取值到Java类(仅运行Java类场景)

如何通过独立Java类从JSP读取变量值

嘿,我看你想通过独立运行的Java类(SAMPLE.java)从JSP页面里拿到变量值对吧?你当前的代码逻辑有点绕——现在是JSP主动调用Java类的方法,而不是Java类主动获取JSP里的变量。我来帮你调整下,让流程更顺畅:

1. 先调整JSP的输出逻辑

你的JSP原本直接调用SAMPLE.getValue(),这不符合“Java类读取JSP变量”的需求。我们需要让JSP把处理后的变量值输出到HTTP响应里,这样发起请求的Java类就能读取到:

<%@page import="java.sql.*" %>
<%
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection conn = null;
    String mphone = request.getParameter("mobile");
    int mcompregkeyid = 0;
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost/myschema","myuser","mypass");
        Statement stmt = conn.createStatement();
        ResultSet rset = stmt.executeQuery("Select max(keyid) from mytable");
        // 加个判断避免空指针异常
        if(rset.next()) {
            mcompregkeyid = rset.getInt(1);
        }
        // 把变量值输出到响应中,供Java类读取
        out.print(mcompregkeyid);
    } catch (Exception e) {
        // 异常时输出错误信息
        out.print("Error: " + e.getMessage());
    } finally {
        // 确保数据库连接关闭
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                out.print("Could not connect to local server. Please try after some time.!!!");
            }
        }
    }
%>

2. 修改Java类代码,读取JSP的响应

你的Java类目前只建立了连接,但没读取JSP返回的内容。我们要添加代码来获取响应,拿到变量值:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class SAMPLE {
    public static void main(String[] args) {
        String mmobile = "1234567890"; // 替换成你实际要传递的mobile值
        URL myURL = null;
        URLConnection myURLConnection = null;
        BufferedReader reader = null;
        
        try {
            // 构造带参数的请求URL
            String mainUrl = "http://localhost:8080/Portal/example.jsp?mobile=" + mmobile;
            myURL = new URL(mainUrl);
            myURLConnection = myURL.openConnection();
            myURLConnection.connect();
            
            // 读取JSP返回的响应内容
            reader = new BufferedReader(new InputStreamReader(myURLConnection.getInputStream()));
            String response = reader.readLine();
            
            if (response != null) {
                // 成功拿到JSP返回的变量值
                System.out.println("从JSP获取到的keyId:" + response);
                // 调用类中的方法处理这个值(如果需要)
                getValue(response);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源,避免内存泄漏
            try {
                if (reader != null) reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void getValue(String keyId) {
        // 这里写你自己的业务逻辑
        System.out.println("正在处理keyId:" + keyId);
    }
}

3. 几个关键注意点

  • 现在的流程是:Java类发起HTTP请求到JSP → JSP处理数据库查询 → JSP把变量值输出到响应 → Java类读取响应拿到变量值,完全符合你“仅运行Java类,从JSP读取变量”的需求。
  • 记得确保你的Web服务器(比如Tomcat)已经启动,JSP页面部署在http://localhost:8080/Portal/路径下。
  • 代码里加了异常处理和资源关闭,避免出现内存泄漏或空指针问题。

内容的提问来源于stack exchange,提问作者A Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:59:53