关于jsp中,调用根路径时发生的问题

最近开始研究javaweb相关的一些技术,不得不说,就码代码的便捷度而言,java比c语言要强太多了,面向对象的设计理念较之面向过程确实有着强大的优势。但是由于c语言对于底层控制的强大能力,使得它仍然是包括本人所从事的设备制造领域在内的众多行业的首选。
    话不多说,今天所要分享的是一点学习的笔记,帮助像我一样初识java,jsp的同学们解决可能会遇到的问题
    大体的背景如此啊:
    1.用jsp做了一个页面带有登录功能,想要添加登出功能
    2.项目的大体结构如下:
                                                                                   关于jsp中,调用根路径时发生的问题_第1张图片
其中主页中的index.jsp同时调用了common文件夹下的footer,header,以及taglib单个jsp文件,分别为底部固定框,头部固定框,以及网站的根路径。关键的header以及taglib代码分别如下:
header
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>


taglib
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<%
    String path = request.getContextPath();
    int port = request.getServerPort();
    String basePath  = null;
    if(port==80){
        basePath = request.getScheme()+"://"+request.getServerName()+path;
    }else{
        basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
    }
    request.setAttribute("basePath", basePath);
%>

首页的index
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@include file="common/header.jsp"%>

<%@include file="common/taglib.jsp"%>






欢迎来到我的博客



	
	
	


连载小说
编程代码类
<%@include file="common/footer.jsp"%>

代码中当登录完成需要退出时,触发header.jsp中的登出按钮理论上是走如下逻辑:
            登出

但是系统一直提示系统却报出404无法找到文件的异常。
关于jsp中,调用根路径时发生的问题_第2张图片
实际上在taglib中我已经明确获取到了系统的根路径并且保存在了basepath这个参数中,index也include了这个文件。更奇怪的是,index中的javascript的代码段中也使用了这个文件进行进行加载,进行登录的校验工作,唯独登出的时候报出了错误。

在我百思不得其解的时候我发现了问题所在。原来我在index加载文件的时候,顺序出现了问题,应该先调用tablib,再调用header,而我却把先后顺序放反了。basepath在taglib的文件中定义了,而header需要调用这个变量,所以应该放在加载taglib之后再加载到index中,这样实现basepat变量的使用。如下图
修改后的index include文件顺序:

<%@include file="common/taglib.jsp"%>

<%@include file="common/header.jsp"%>

重新刷新页面后,正常的实现了页面的切换。
可能是用c用习惯了,include文件的时候一般不会考虑先后顺序的问题,然而通过解决这个小问题,使我加深了对于jsp的认识,可能这个错误比较低级,但是我觉得初入门的新手们也很有可能会遇到和我一样的问题故编辑此文。一来为将来回头总结学习过程设置节点,二来,如果能为广大刚入门的小伙伴们解决同样问题的话,那也甚好。

你可能感兴趣的:(jsp)