转载:web工程中URL地址的推荐写法

在JavaWeb开发中,只要是写URL地址,那么建议最好以"/"开头,也就是使用绝对路径的方式,那么这个"/"到底代表什么呢?可以用如下的方式来记忆"/":如果"/"是给服务器用的,则代表当前的web工程,如果"/"是给浏览器用的,则代表webapps目录。

1."/"代表当前web工程的常见应用场景

①.ServletContext.getRealPath(String path)获取资源的绝对路径

/**
* 1.ServletContext.getRealPath("/download/1.JPG")是用来获取服务器上的某个资源,
* 那么这个"/"就是给服务器用的,"/"此时代表的就是web工程
 * ServletContext.getRealPath("/download/1.JPG")表示的就是读取web工程下的download文件夹中的1.JPG这个资源
* 只要明白了"/"代表的具体含义,就可以很快写出要访问的web资源的绝对路径
*/
this.getServletContext().getRealPath("/download/1.JPG");

②.在服务器端forward到其他页面

1 /**
2 * 2.forward
3  * 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的,
4 * 那么这个"/"就是给服务器用的,所以此时"/"代表的就是web工程
5 */
6 this.getServletContext().getRequestDispatcher("/index.jsp").forward(request, response);

③.使用include指令或者<jsp:include>标签引入页面

 <%@include file="/jspfragments/head.jspf" %>
<jsp:include page="/jspfragments/demo.jsp" />

此时"/"代表的都是web工程。

2、"/"代表webapps目录的常见应用场景

①.使用sendRedirect实现请求重定向

response.sendRedirect("/JavaWeb_HttpServletResponse_Study_20140615/index.jsp");

服务器发送一个URL地址给浏览器,浏览器拿到URL地址之后,再去请求服务器,所以这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录,"/JavaWeb_HttpServletResponse_Study_20140615/index.jsp"这个地址指的就是"webapps\JavaWeb_HttpServletResponse_Study_20140615\index.jsp"

  response.sendRedirect("/项目名称/文件夹目录/页面");这种写法是将项目名称写死在程序中的做法,不灵活,万一哪天项目名称变了,此时就得改程序,所以推荐使用下面的灵活写法:

response.sendRedirect("/JavaWeb_HttpServletResponse_Study_20140615/index.jsp");

这种写法改成

response.sendRedirect(request.getContextPath()+"/index.jsp");

request.getContextPath()获取到的内容就是"/JavaWeb_HttpServletResponse_Study_20140615",这样就比较灵活了,使用request.getContextPath()代替"/项目名称",推荐使用这种方式,灵活方便!

②.使用超链接跳转

<a href="/JavaWeb_HttpServletResponse_Study_20140615/index.jsp">跳转到首页</a>

  这是客户端浏览器使用的超链接跳转,这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录。

  使用超链接访问web资源,绝对路径的写法推荐使用下面的写法改进:

<a href="${pageContext.request.contextPath}/index.jsp">跳转到首页</a>

这样就可以避免在路径中出现项目的名称,使用${pageContext.request.contextPath}取代"/JavaWeb_HttpServletResponse_Study_20140615"

③.Form表单提交

1 <form action="/JavaWeb_HttpServletResponse_Study_20140615/servlet/CheckServlet" method="post">
2         <input type="submit" value="提交">
3 </form>

这是客户端浏览器将form表单提交到服务器,所以这个"/"是给浏览器使用的,此时"/"代表的就是webapps目录。

对于form表单提交中action属性绝对路径的写法,也推荐使用如下的方式改进:

1 <form action="${pageContext.request.contextPath}/servlet/CheckServlet" method="post">
2          <input type="submit" value="提交">
3 </form>

${pageContext.request.contextPath}得到的就是"/JavaWeb_HttpServletResponse_Study_20140615"

${pageContext.request.contextPath}的效果等同于request.getContextPath(),两者获取到的都是"/项目名称"

④.js脚本和css样式文件的引用

1  <%--使用绝对路径的方式引用js脚本--%>
2  <script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>
3  <%--${pageContext.request.contextPath}与request.getContextPath()写法是得到的效果是一样的--%>
4  <script type="text/javascript" src="<%=request.getContextPath()%>/js/login.js"></script>
5  <%--使用绝对路径的方式引用css样式--%>
6  <link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" type="text/css"/>

综合范例:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>"/"代表webapps目录的常见应用场景</title>
    <%--使用绝对路径的方式引用js脚本--%>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/index.js"></script>
    <%--${pageContext.request.contextPath}与request.getContextPath()写法是得到的效果是一样的--%>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/login.js"></script>
    <%--使用绝对路径的方式引用css样式--%>
      <link rel="stylesheet" href="${pageContext.request.contextPath}/css/index.css" type="text/css"/>
  </head>

  <body>
      <%--form表单提交--%>
       <form action="${pageContext.request.contextPath}/servlet/CheckServlet" method="post">
           <input type="submit" value="提交">
       </form>
       <%--超链接跳转页面--%>
       <a href="${pageContext.request.contextPath}/index.jsp">跳转到首页</a>
  </body>
</html>
时间: 2024-10-21 16:44:17

转载:web工程中URL地址的推荐写法的相关文章

web工程中URL地址的推荐写法

在Javaweb开发中,只要写URL地址,建议以“/”开头,也就是使用绝对路径的方式. “/”:如果是给服务器的,代表当前的web工程.给浏览器的,代表webapps目录 代表web工程 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 ②.在服务器端forward到其他页面 1 /** 2 * 2.forward 3 * 客户端请求某个web资源,服务器跳转到另外一个web资源,这个forward也是给服务器用的, 4 * 那么这个"/&qu

web工程中URL地址的写法

在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开发中是要禁用的.至于相对资源路径和相对根路径用哪个的问题,笔者推荐用相对根路径,相对资源路径容易引起混乱.笔者建议在web开发中通通使用相对根路径,即通通以"/"开头写URL地址.因为这样我们只需弄清楚"/"代表谁即可.可以简单的理解为"/"是给谁用

web工程中各类地址的写法

web工程中各类地址,最好以/开头开始前先想好:地址是给谁用的 服务器:/ == web应用 浏览器: / == 网站 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1,地址是给服务器用的 request.getRequestDispatcher("/foot.jsp").forward(req

web工程中的各种路径(eclipse开发)

目前遇到的 web 工程中要写url和路径的文件有 webContent中.jsp/.html src中的servlet类 src非servlet类的普通类 .jsp/.html form表单提交的action 1. 跳转到.jsp 使用相对路径,相对于web工程根目录 <!-- from JSP1.jsp to JSP2.jsp --> <!-- JSP1.jsp中的form --> <form action="File/JSP2.jsp"> &l

如何在Web工程中实现任务计划调度

转载自: http://www.oschina.net/question/146385_37793?sort=time 下面就Servlet侦听器结合Java定时器来讲述整个实现过程.要运用Servlet侦听器需要实现javax.servlet.ServletContextListener接口,同时实现它的contextInitialized(ServletContextEvent   event)和contextDestroyed(ServletContextEvent   event)两个接

关于Java Web工程中web.xml文件

提及Java Web工程中web.xml文件无人不知,无人不识,呵呵呵:系统首页.servlet.filter.listener和设置session过期时限,张口就来,可是你见过该文件中的error-page标签吗?下面直接以例子的形式说明error-page标签的使用: 一个servlet文件: package com.ghj.packageofservlet; import java.io.IOException; import javax.servlet.ServletException;

web 工程中利用Spring的 ApplicationContextAware接口自动注入bean

最常用的办法就是用 ClassPathXmlApplicationContext, FileSystemClassPathXmlApplicationContext, FileSystemXmlApplicationContext 等对象去加载Spring配置文件,这样做也是可以, 但是在加载Spring配置文件的时候,就会生成一个新的ApplicaitonContext对象而不是Spring容器帮我们生成的哪一个, 这样就产生了冗余, 所以不采用应用程序手动加载文件的方式,而是使用Applic

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

java web工程中logback换配置文件的路径

本人小网站:   http://51kxd.com/  欢迎大家不开心的时候访问访问,调节一下心情 web.xml中配置: <!-- windows  logback.xml文件跟web容器(比如tomcat)在同一个目录中.linux随意  --> <context-param> <param-name>logbackConfigLocation</param-name> <param-value>file:/datum/Data/conf/c