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

如何在JSP页面访问Java Resources下的类?新手遇对象调用报错

解决Servlet与JSP中属性获取及类导入的问题

嘿,刚上手Servlet和JSP遇到这种问题真的很常见,我来一步步帮你排查解决:

1. 先搞清楚作用域的问题——你拿错地方了!

你提到在Servlet里把属性添加到request中,但在JSP里却用request.getSession().getAttribute("schoolschedule")来获取,这是核心错误:

  • Servlet里如果是request.setAttribute("schoolschedule", scheduleObj),那这个属性只存在于当前请求的request作用域,JSP里必须用request.getAttribute("schoolschedule")获取
  • 如果你想把属性存在session作用域(跨请求可用),那Servlet里得改成:
    request.getSession().setAttribute("schoolschedule", scheduleObj);
    
    这时候JSP里用request.getSession().getAttribute()才是对的

2. 解决类导入无法解析的问题

导入类时一定要注意这几点:

  • 必须用全限定类名:比如你的SchoolSchedule类在com.example包下,JSP里的导入语句应该是:
    <%@page import="com.example.SchoolSchedule" %>
    
    别只写类名,除非类在默认包(但强烈不推荐用默认包,Servlet容器对默认包的类加载有问题)
  • 确认类已正确编译部署:
    • 手动编译的话,要把编译后的.class文件放到WEB-INF/classes目录下对应包路径里(比如WEB-INF/classes/com/example/SchoolSchedule.class)
    • 用IDE(IDEA/Eclipse)的话,检查项目部署配置,确保编译后的类已经被打包到war包或者部署到服务器中
  • 类的访问修饰符要是public:如果你的SchoolSchedule类是default访问权限(没写public),JSP是无法访问到的

3. 获取属性后记得类型转换

getAttribute()方法返回的是Object类型,必须转成你的实体类才能调用方法,比如在JSP里:

<%
  // 先获取并强转
  SchoolSchedule schedule = (SchoolSchedule) request.getAttribute("schoolschedule");
  // 现在就能调用方法了
  out.println(schedule.getCourseName());
%>

4. 更简单的方式:用EL表达式

新手其实可以试试EL表达式,不用显式强转和导入类(只要类在正确的包下),直接通过属性名调用getter方法:

<!-- 假设你的类有getCourseName()方法 -->
${schoolschedule.courseName}

这样代码更简洁,也不容易出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:12:47