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

不使用Servlet,如何在Java文件中获取JSP的request parameters?

不用Servlet在Java文件中获取JSP请求参数的方法

嘿,刚入门Java的话确实容易在JSP和Java类的参数传递上懵圈,我来给你捋清楚怎么在不用Servlet的情况下拿到JSP里的lotsize和bedrooms参数~

其实核心思路是把JSP中拿到的请求参数传递给Java类,或者直接把request对象传给Java类让它自己取参数,下面给你两种实用的方案:

方案1:在JSP中获取参数后传给Java类方法

这种方式最简单,适合业务逻辑比较独立的场景:

第一步:编写处理参数的Java类

先写一个普通的Java类,定义方法来接收lotsize和bedrooms参数(注意要处理类型转换的异常哦):

public class PropertyService {
    // 接收从JSP传来的字符串参数,转成需要的类型并处理
    public static int calculateEstimatedValue(String lotSizeStr, String bedroomsStr) {
        int lotSize = 0;
        int bedrooms = 0;
        
        // 处理字符串转数字的异常,避免空值或非数字输入导致报错
        try {
            if (lotSizeStr != null && !lotSizeStr.isEmpty()) {
                lotSize = Integer.parseInt(lotSizeStr);
            }
            if (bedroomsStr != null && !bedroomsStr.isEmpty()) {
                bedrooms = Integer.parseInt(bedroomsStr);
            }
        } catch (NumberFormatException e) {
            System.err.println("参数格式错误:" + e.getMessage());
            // 可以返回默认值或者抛出自定义异常,根据你的需求调整
        }
        
        // 这里写你的业务逻辑,比如计算房产估值
        return lotSize * 120 + bedrooms * 45000;
    }
}

第二步:在JSP中调用Java类方法

在你的JSP文件里,先从request对象拿到参数,再传给Java类的方法:

<%
    // 从request中获取请求参数
    String lotsize = request.getParameter("lotsize");
    String bedrooms = request.getParameter("bedrooms");
    
    // 调用Java类的静态方法,传入参数
    int estimatedValue = PropertyService.calculateEstimatedValue(lotsize, bedrooms);
%>

<!-- 可以在页面上展示结果 -->
<p>房产估值:<%= estimatedValue %> 元</p>

方案2:直接把request对象传给Java类

如果你的Java类需要用到更多request相关的内容(比如会话、其他参数),可以直接把HttpServletRequest对象传给Java类:

第一步:编写接收request的Java类

注意要引入Servlet API的包(Tomcat等服务器自带这个包):

import javax.servlet.http.HttpServletRequest;

public class PropertyHandler {
    public void processPropertyInfo(HttpServletRequest request) {
        // 直接从request中获取需要的参数
        String lotSize = request.getParameter("lotsize");
        String bedrooms = request.getParameter("bedrooms");
        
        // 后续逻辑:比如验证参数、存储到数据库等
        System.out.println("收到的Lot Size:" + lotSize);
        System.out.println("收到的Bedrooms数量:" + bedrooms);
        
        // 如果需要把处理结果返回给JSP,可以存到request的attribute里
        request.setAttribute("calculatedValue", Integer.parseInt(lotSize)*100 + Integer.parseInt(bedrooms)*50000);
    }
}

第二步:在JSP中调用并传递request

<%
    PropertyHandler handler = new PropertyHandler();
    // 把当前的request对象传给Java类的方法
    handler.processPropertyInfo(request);
    
    // 可以从attribute中取出Java类处理后的结果
    int value = (int) request.getAttribute("calculatedValue");
%>

<p>计算后的结果:<%= value %></p>

注意事项

  • 确保你的Java类放在项目的WEB-INF/classes目录下(或者打包成jar放在WEB-INF/lib),这样JSP才能找到它
  • 一定要处理参数为空或者格式错误的情况,避免程序崩溃
  • 虽然不用Servlet,但还是依赖Servlet API(比如HttpServletRequest),所以项目要能访问到Servlet的相关jar包(比如Tomcat的servlet-api.jar)

另外你提到的attribute,它主要是用来在JSP和Java类之间共享处理后的数据,而不是直接获取请求参数的哦,请求参数本质上还是存在request对象里的~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:56:30