`

java web开发中解决各种跳转和链接的路径的问题

 
阅读更多

1、问题的出现:

        一个web项目,有webcontent目录存放jsp文件、css、js、image等文件,有servlet的目录存放servlet类文件、dao类文件、common类文件、action类文件等等。在我们开发的过程中,经常需要各种跳转,由于文件众多,初始时没有考滤的很周全,各种相对路径、绝对路径一起上,导致越写到后面,出现的问题也越多,页面跳不了、js/css/图片文件找不到等等,然后又要调试一番,效率低下浪费了许多时间。

2、对于以上问题我们如何解决呢?

       首先,我们要统一路径的写法。虽然相对路径写起来代码少,比较快,但是有时候目录的深度太高,导致../../这样的相对路径的寻址也不是很好管理,所以统一用绝对路径为好。但是用统一的路径的话,就必须弄一个变量,存放项目的根目录,这样我们写各种链接或跳转地址时,就直接用起这个变量就ok啦,看起来简洁许多。

3、具体实现:

       我们都知道,在web中,地址是这样的->协议://主机名或ip地址:端口号/文件路径,这个文件路径就是从我们项目的根目录开始的,所以的到这一个url的方法我们用以下代码实现:

    

public static String getPath(HttpServletRequest request){
		String scheme=request.getScheme();//获取协议类型名称
		String name=request.getServerName();//获取web服务器名字
		int port=request.getServerPort();//获取使用的端口号
		String path=request.getContextPath();//获取当前项目的跟路径
		String url=scheme+"://"+name+":"+port+path;//得到到项目根目录的绝对路径
		//System.out.println(url);
		return url;
	}

       我们获取各种关于服务器的信息可以用request对象里面的方法:

 

       1)request.getScheme()方法不用多说,获取协议的名称,如http、https、ftp等等

       2)request.getServerName()方法获取服务器名称,若是本地服务器就是localhost,这个也不用多说。

       3)request.getServerPort()方法获取协议使用的端口号,这里本项目用了8080端口号。

       4)request.getContextPath()获取当前项目的根路径,这个就要多说一点了。

       当我们用的是tomcat服务器时,项目一般部署在tomcat下的webapps目录下面,但是部署有两种。

       一种是直接把项目文件复制到webapps的ROOT目录下(当然,用eclipse开发时应该不是这样子,而是第二种方法),这样访问的时候在浏览器中直接用服务器名就可以访问到web内容,这样子用request.getContextPath()获取得到的是一个空字符"",注意不是null。

       一种是在webapps下面建立一个以项目名称的目录,并将项目拷到这个目录。这样子用request.getContextPath()方法获得的是一个"/项目名称"的字符串。

      本java web项目是第二种方法。

      最后我们用->(协议://主机名或ip地址:端口号/文件路径即项目根目录)的形式生成了一个访问到项目跟目录的绝对路径。这就是我们要的url。

4、使用方法

       既然我们有了得到根目录的绝对地址的方法,开始时我们将其封装到GLOBALS类中,然后在jsp页面中导入这个类,直接调用它的方法返回一个url来使用,在各种地方用在"<%="和"%>"之间插入url变量来使用。

如:

<link rel="stylesheet" href="<%=URL%>/css/admin/AdminIndex.css">

      这样子的形式,这样当产生静态的页面是,即html页面返回给浏览器时,<%=URL%>就变成了实际的地址,不再是变量。

5、还有问题。

      我们在jsp的指令标签和动作标签里面不能再用<%=URL%>这样子的形式嵌入了。除了这个<%=%>方法,我们还有一种和这个是等效的方法就是el表达式,语法结构:${expression}

详解:http://www.cnblogs.com/cyjch/archive/2012/02/08/2342387.html

jsp的动作标签里面是可以用${expression},即el表达式的。这样也就解决了页面所有的地址问题。

<jsp:include  page="${URL}/admin/view/AdminRight.jsp"/>

6、还可以优化一下

  我们在每个页面都设置了调用了那个方法,来获取url,可是感觉是没必要每次都运行那个方法,重复运行。后面想了想,如何在所有页面上弄一个全局的变量,哪里都可以获取。那就是session,可以用session来存,这样在每个页面只要通过session获取就可以了,没必要每次都要运行那个方法。

  所以我们在用户首次访问时,就直接设置了session:

  

String url=GLOBALS.getPath(request);
session.setAttribute("url", url);

  然后在需要这个url的地方获取:

 

<%String URL=session.getAttribute("url").toString(); %>

 

 

 

    

分享到:
评论

相关推荐

    java Web 中相对路径绝对路径问题总结

    在Java Web开发中,理解和掌握相对路径与绝对路径的运用是至关重要的,因为这直接影响到资源定位、页面跳转以及文件读写等操作的正确性。以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与...

    java_web开发中的路径问题定义.pdf

    Java Web 开发中路径问题的定义是开发人员在构建动态Web应用程序时必须理解的关键概念。路径问题主要涉及JSP页面、Servlet以及web.xml配置文件,它们之间的路径引用方式有所不同,容易造成初学者的困扰。 首先,JSP...

    Java Web Structs2开发

    Java Web Struts2框架是Java企业级开发中的一个重要组成部分,它提供了一种MVC(Model-View-Controller)设计模式的实现,使得开发者能够更高效地构建动态、可维护的Web应用程序。Struts2框架是对早期Struts1的升级...

    李兴华Java Web开发实战经典(高清版) Part2

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    Java web开发工具类

    Java Web开发工具类主要指的是在构建Web应用程序时使用的各种实用工具和框架,这些工具和框架极大地简化了开发过程,提高了代码的可维护性和可扩展性。Struts2是其中非常著名的MVC(Model-View-Controller)框架,它...

    Servlet+jsp Java Web开发

    在Java Web开发中,Servlet和JSP是两个关键的技术组件,它们被广泛用于构建动态、交互式的Web应用程序。本项目以"Servlet+jsp Java Web开发"为主题,采用经典的开发环境:MySQL数据库、Tomcat 6应用服务器、Eclipse...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...

    web中的路径问题

    ### Web中的路径问题详解 在Web开发中,正确处理路径是...综上所述,在Java Web开发中,理解和掌握正确的路径获取方法是非常重要的。开发者需要根据实际需求选择合适的路径获取方式,并确保代码的健壮性和可移植性。

    路径跳转问题.txt

    路径跳转问题是Web开发中的一个重要方面,涉及到上下文路径、基本路径和URL的构建等多个环节。通过对这些概念的理解和技术实现的掌握,可以有效地解决路径跳转问题,提高Web应用的质量和性能。希望本文能够帮助...

    Struts框架结构的Java Web开发技术基础与实践教程》上

    在Java Web应用开发中,Struts框架帮助开发者组织代码,实现业务逻辑与用户界面的分离,提高了开发效率和应用的可维护性。 **1. MVC设计模式** MVC设计模式是软件工程中的一种经典架构,它将应用分为三个主要部分...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...

    java web开发参考资料

    对于那些对Web概念模糊的人来说,本参考资料旨在提供一个清晰的学习路径,并帮助初学者全面了解Java Web开发的关键组件。 #### 二、核心API介绍 1. **PageContext**:`javax.servlet.jsp.PageContext` 是一个接口...

    web开发中获得绝对路径的方法

    绝对路径的获取对于页面中的资源定位、链接跳转等方面都有着不可替代的作用。本文将详细介绍如何在Web开发中获得绝对路径的方法,并通过实例来解释具体的实现过程。 ### 一、理解绝对路径与相对路径 在开始之前,...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发...

    struts2 中路径无法跳转的问题

    综上所述,解决Struts2中路径无法跳转的问题需要全面检查项目配置、Action实现、结果类型和路径设置,以及可能的异常处理和环境配置。通过逐步排查,通常能找出问题的根源并进行修复。如果你在上述步骤中遇到困难,...

    java web培训课件

    JSP(Java Server Pages)作为Java Web开发中的重要组成部分,提供了多个内置对象来简化Web应用的开发过程。这些对象可以直接在JSP页面中使用,无需显式声明,极大地提高了开发效率。以下是JSP中的9个基本内置组件:...

    精通struts.基于MVC的.java.web设计与开发.pdf 高清下载

    通过上述介绍,我们可以了解到Struts框架为Java Web应用开发提供了一套成熟而高效的解决方案。无论是初学者还是有经验的开发者,都能从中受益匪浅。希望本文能够帮助大家更好地理解和掌握Struts框架的核心知识。

    精通Struts:基于MVC的Java Web设计与开发(下).pdf

    在《精通Struts:基于MVC的Java Web设计与开发》这本书中,作者孙卫琴深入浅出地介绍了Struts框架的基础知识及高级应用技巧。本书共分为两卷,上卷主要讲解了Struts框架的基本概念、工作原理及其核心组件等;而下卷...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第22章 常用框架的介绍以及环境搭建(共16页).pptx

    本教程涵盖了从基础到进阶的Java Web开发知识,包括JavaScript、DOM操作、表单验证、自定义Web服务器、Servlet、JSP、内置对象、JSTL、EL、Java Bean、过滤器、监听器、自定义标签、AJAX、自定义MVC框架、Spring IOC...

Global site tag (gtag.js) - Google Analytics