`

jsp加载常量的探讨

 
阅读更多

今天遇到了一个jsp加载常量的问题:

代码如下:

 

public class SystemConstant {
    public static final int LSSV = 188;

    public int OFD = 1;
}
 

jsp页面代码如下:

 

<%@page import="com.zj.logistics.util.SystemConstant"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>  
  <% 
  	out.println("static:" + SystemConstant.LSSV);
  	out.println("not static:" + new SystemConstant().OFD);
  %>
</body>
</html>
 

启动tomcat,结果也很简单:页面输出 static:188    not static:1  

 

但是将systemconstant中的LSSV改为126, 将OFD的值改为2时,保存之后,jsp页面不要动,问题出现了:

页面显示:static:188    not static:2

即, LSSV的值没有在界面上发生改变。

想了很多办法:1.重新部署项目;2.重新编译项目;3.重新启动tomcat;4.重新启动电脑。均不成功

最终只有一个办法可行,即,tomcat运行,稍对jsp页面加以改动,比如任意位置多加一个空格,保存。刷新浏览器,成功。

 

 究其原因:

1.在最终一个方法上,tomcat对该jsp页面重新reloading,重新编译,生成了新的class文件,使得访问成功。

2.前几种方法的失败,可能在该jsp的class文件中,保持着对static final int LSSV的值引用,即在class中放入的是具体的值,而非内存地址。。

测试发现,将static final int LSSV 改为 static final Integer LSSV后,不存在上述问题,即改为Integer后,jsp的class中保持着对该变量的地址引用。。

 

困扰:

如果项目很大,systemconstant中很多常量,并且jsp中也引用了这些常量,难道有一天要修改systemconstant中的常量,要对每个jsp都保存一遍么?

 

上述中有一种办法可以解决,即用搜索办法,将systemconstant中的int替换成了Integer,但是也留下了隐患。。

例如:

 

 

switch(method) {
		case SystemConstant.UFSV_UPLOADUI : 
			this.gotoUploadFileUI(request, response); break;
		case SystemConstant.UFSV_UPLOAD : 
			this.uploadFile(request, response); break;

 你后端使用的是switch条件判断,在jdk 7版本以下,case后面的参数要求是常量类型,将int改你为Integer以后,会报错,并且如何将Integer类型转换为常量类型(static final int),也没有找到合适的办法。。

 

还有一种办法,是将D:\apache-tomcat-7.0.27\work\Catalina\localhost\项目名\org\apache\jsp\WEB_002dINF 目录下对应jsp的java和class文件删除,这样也可以达到目的。。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    JSP中java代码与js之间的传值

    这篇博客将探讨如何在JSP中实现Java与JavaScript之间的值传递。 首先,让我们了解JSP的基本结构。JSP页面本质上是HTML代码与嵌入的Java代码相结合的。Java代码被编译成Servlet,然后在服务器端执行,生成HTML响应。...

    关于jsp的一些知识总结

    关于“关于jsp的一些知识总结”,我们可以深入探讨JSP(JavaServer Pages)的多个核心概念,同时结合提供的标签“源码”和“工具”,我们将涵盖JSP的语法、生命周期、与Servlet的关系、内存管理和设计模式等方面。...

    jsp基础教程代码(第2版)

    - **例子3** (`example2_3.jsp`):涉及了方法的定义和调用,以及常量的使用。页面中定义了圆的面积和周长计算方法,并通过调用这些方法展示其结果。此例中,`! %&gt;`, `&lt;% %&gt;`, 和`&lt;%= %&gt; `标记再次得到了应用。 - **...

    最新JSP入门与应用

    在最新的JSP入门与应用中,我们将深入探讨JSP的基础知识,包括其核心概念、语法特性以及如何与数据库进行交互,同时通过实际范例帮助初学者快速上手。 **网络概念**是理解JSP的前提。网络是将分布在世界各地的...

    解析Java虚拟机中类的初始化及加载器的父委托机制共14页

    本文将深入探讨Java虚拟机中的类初始化以及加载器的父委托机制。 一、类的加载 类加载是JVM启动时或运行中根据需要动态加载类到内存中的过程。这个过程分为三个阶段:加载、链接和初始化。 1. 加载:JVM通过类...

    jsp源码其他类别分页QQ菜单jsp标签-noka3.9

    根据提供的文件信息,我们可以深入探讨以下几个关键的知识点: ### 1. JSP技术概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端网页开发技术。它允许开发者在HTML文档中嵌入Java代码,从而使得动态内容...

    jsp做翻页,查询数据库总页数的最佳实现

    本篇将基于`JSP`(JavaServer Pages)来探讨如何实现翻页功能,并查询数据库的总页数。`JSP`是一种动态网页技术,它结合了HTML和Java代码,可以方便地处理服务器端的数据。 首先,我们需要理解分页的基本概念。分页...

    ConnDB.java.rar_ConnDB.java JSP_connDB

    本篇文章将深入探讨`ConnDB.java`类以及如何在JSP页面中调用该类进行数据库交互。 首先,`ConnDB.java`通常包含以下核心知识点: 1. **数据库连接池**:为了提高系统性能和资源利用率,`ConnDB.java`会使用数据库...

    基于jsp的体育用品商城源码数据库论文.doc

    本文档是关于基于JSP的体育用品商城的毕业设计论文,主要探讨了系统的设计、需求分析、数据库设计与实现以及后台系统和前端页面的开发。本文将深入解析这些关键点,帮助理解一个基于JSP的电子商务平台的构建过程。 ...

    13.类加载的过程1

    现在,让我们深入探讨这些阶段。 1. **加载**: 加载阶段是Java虚拟机(JVM)获取类的二进制表示并将其转化为内存中的数据结构的过程。主要任务包括: - 通过类的全限定名获取类的二进制流,这可能来源于JAR文件...

    jsp中影响编码的属性及其设置小结

    本文将详细解析JSP中影响编码的属性及其设置,并探讨它们之间的相互影响和作用顺序。 首先,我们需要理解几个关键的名词: 1. `contentType`:这个属性在`; charset=UTF-8"%&gt;`中定义,用于指定HTTP响应头中的...

    jsp实现仿QQ空间新建多个相册名称并向相册中添加照片功能.docx

    在本项目中,我们主要探讨如何使用JSP和Java来实现一个类似QQ空间的功能,包括创建多个相册、向相册中添加照片、删除照片以及删除相册。这个功能是基于Eclipse IDE,使用Oracle数据库进行数据存储,并依赖于...

    Struts2入门级别文档

    本文将深入探讨Struts2框架的核心组件之一——`struts.xml`配置文件,以及其内部的常量配置、包配置等内容,帮助初学者快速掌握Struts2的基本操作。 #### 1. `struts.xml`配置文件:Struts2的心脏 `struts.xml`是...

    java开发第3阶段.doc

    从加载数据库驱动程序开始,到指定数据库、打开数据库连接、执行查询以及处理查询结果,这些步骤都逐一进行了详尽的讲解,让读者能够熟练地进行数据库操作。 接下来,教程深入探讨了SWING这一强大的Java GUI库。...

    JAVA规则开发篇

    本文将深入探讨《JAVA规则开发篇》中提出的六大核心规则,这些建议不仅能够帮助开发者优化代码结构,还能显著提高程序性能与数据库资源管理效率。 ### 一、数据库连接管理的重要性 **规则1:确保在“finally”块中...

    order_meal.zip

    5. `Constants`:常量类,定义了系统中的各种常量,如URL路径、数据库连接参数等。 在实际应用中,这些组件通过HTTP请求和响应进行交互。例如,用户在前端页面选择菜品并提交订单,Servlet接收到请求后,将订单信息...

    java_servlet

    本文将深入探讨 Servlet 的最佳实践,涵盖框架的选择、性能优化、配置文件加载、会话管理和单线程模型的使用等方面。 #### 有效使用 Servlet 框架 ##### 选择合适的 Servlet 框架 在选择 Servlet 框架时,重要的...

    Struts框架MVC模式登录例题

    4. **视图渲染**:根据`execute()`方法返回的结果,Struts会决定加载哪个JSP页面来呈现。成功页面可能会显示欢迎信息,而错误页面则展示错误提示。 5. **国际化和异常处理**:为了提供多语言支持,可以使用资源包...

Global site tag (gtag.js) - Google Analytics