JAV*_*eek 0 java string static
我上课了 GlobalData
public class GlobalData {
public static String SERVER_ROOT;
public static String LOGIN_JSP = GlobalData.SERVER_ROOT + "login.jsp";
public static String HOME_JSP = GlobalData.SERVER_ROOT + "s/home.jsp";
public static String Logout = GlobalData.SERVER_ROOT + "Logout";
public static ServletContext SERVLET_CONTEXT;
}
Run Code Online (Sandbox Code Playgroud)
我从contextListener设置这些字符串
GlobalData.SERVLET_CONTEXT = contextEvent.getServletContext();
GlobalData.SERVER_ROOT = GlobalData.SERVLET_CONTEXT.getContextPath()+"/";
System.out.println("setting server root : " + GlobalData.SERVER_ROOT);
System.out.println("setting Home jsp : " + GlobalData.HOME_JSP);
System.out.println("setting Login : " + GlobalData.LOGIN_JSP);
System.out.println("setting Logout : " + GlobalData.Logout)
Run Code Online (Sandbox Code Playgroud)
输出是:
setting server root : /JCMM/
setting Home jsp : nulls/home.jsp
setting Login : nulllogin.jsp
setting Logout : nullLogout
Run Code Online (Sandbox Code Playgroud)
我无法理解这种行为.任何人都可以找到,问题出在哪里?
当GlobalData初始化类时,将设置所有静态变量.没有价值SERVER_ROOT,所以它被初始化为null.然后初始化接下来的3个变量.当使用+来连接字符串,一个null导致字符串 "空",使各3个值的LOGIN_JSP,HOME_JSP和Logout以"零"开头.
稍后,您设置SERVER_ROOT,但不更新其他3,因此它们保留为前面带"null"的字符串.
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |