Jsp与servlet路径问题

Web开发中的路径问题

2012-01-23 01:43:54|  分类: JAVA |  标签:jsp  web  servlet  路径  javabean   |举报 |字号大中小 订阅

路径问题在Web开发中算是令人比较蛋疼的问题,尤其是用相对地址时,同样的代码,在不同的目录结构中竟然会出现有对有错的结果,让人茫然不知所措。这种错误,究其原因,还是对Web中路径的概念一知半解,为彻底避免这种错误,提高开发效率,这里对Web中路径问题稍作总结。

1. 服务器端的相对地址

是在服务器端解析的,是相对于web应用的地址     servlet中的相对地址应该是相对于web应用,即相对于http://localhost:8080/webapp/

2. 重定向的路径问题

forward跳转: servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,     所以,要forward到a.jsp应该这么写: request.getRequestDispatcher("/user/a.jsp")这个/相对于当前的web应用webapp, 其绝对地址就是:http:// localhost:8080 /webapp/user/a.jsp

sendRedirect跳转: response.sendRedirect(address);这个address是在客户端解析的,要跳转到a.jsp,应该这么写:response.sendRedirect("/webapp/user/a.jsp");   3. 客户端的相对地址

所有的html中的相对地址都是相对于http:// localhost:8080 / 的,而不是http:// localhost:8080 /webapp/ 的。     Html中的form表单的action属性的地址应该是相对于http:// localhost:8080 / 的。

所以,如果提交到a.jsp为:action="/webapp/user/a.jsp";提交到servlet为action="/webapp/handleservlet"
    Javascript也是在客户端解析的,所以其相对路径和form表单一样。

4. 两种相对路径       相对于根目录的路径:

/jsp/path/pathTest.jsp      在服务器端解析为绝对路径为:http://localhost:8080/webapp/jsp/path/pathTest.jsp       在客户端解析为的绝对路径为:http://localhost:8080/jsp/path/pathTest.jsp

相对于当前目录的路径:

jsp/path/pathTest.jsp       当前目录的路径为http://localhost:8080/webapp/jsp/path

那么绝对路径为:http://localhost:8080/webapp/jsp/path/jsp/path/pathTest.jsp

5. 站点根目录和css路径问题

当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,会正常找到相应的css     但是如果从一个和当前jsp的路径不一样的Servlet中forward到这个jsp时,当前的相对路径是哪个Servlet的相对路径,而不是jsp所在的路径,这时不能在jsp中用这样的路径:<link href="css.css" rel="stylesheet" type="text/css">或者<link href="../../css.css" rel="stylesheet" type="text/css">。

这中情况下,要用站点根目录来引用css文件,就是相对于http://ip/ 的目录,以"/"开头,即href="/webapp/css.css"。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。

也可以理解为在客户端(jsp/html文件中),引用文件时,都要用/wabapp/***开头,因为客户端的相对地址是http://localhost:8080/

6. servlet中几个获取路径方法的对比

对于url: http://localhost:8080/webapp/blog/list

那么分别调用request.getContextPath( )、request.getServletPath( ) 、 request.getURI( )、request.getURL( )分别返回什么路径?

这几个方法都是在HttpServletRequest接口中定义的。

1). request.getContextPath( )返回web应用程序的路径,上例中该方法将返回/webapp;

2). request.getServletPath( ) 返回Servlet的路径。上例中该方法将返回/blog/list;

3). request.getRequestURL( )返回请求的URL,上例中即为http://localhost:8080/webapp/blog/list ;

4). request.getRequestURI( )返回HTTP请求行中请求URI的部分。上例中该方法将返回/webapp/blog/list.

*注:事例所用服务器端口号为8080,webapp是web工程名字

Jsp与servlet路径问题,布布扣,bubuko.com

时间: 2024-12-10 22:14:42

Jsp与servlet路径问题的相关文章

JAVA,JSP,Servlet获取当前工程路径-绝对路径

在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径. 另:在Jsp,Servlet,Java中详细获得路径的方法! 1.jsp中取得路径: 以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.getRequestURI()结果:/TEST/test.jsp(

JSP、Servlet中的相对路径和绝对路径

1.JSP.Servlet中的相对路径和绝对路径  前提:假设你的Http地址为http://192.168.0.1/你的web应用为test,path="/test"那么你的web应用URL为http://192.168.0.1/test/ 如果JSP,JS文件放在WEB-INF目录下根本无法访问的,JSP如果放在WEB-INF目录下可以通过服务器内部转向进行访问(主要是为了页面的安全),但是JS是通过客户端向服务器请求的,所以图片以及一些JS,CSS只能放在WEB-INF外面  

jsp和servlet的区别

servlet是服务器端的程序,动态生成html页面发到客户端,但是这样 程序里有许多out.println(),java和html语言混在一起很乱.所以 后来推出了jsp.其实jsp就是servlet,每一个jsp在第一次运行时被 转换成servlet文件,再编译成.class来运行. 有了jsp,因此在MVC模式中servlet不再负责生成html页面,转而担任 控制程序逻辑的作用,控制jsp和javabean之间的流转. Servlet与Jsp的区别 * Servlet中没有内置对象,原来

jsp中的路径与跳转

在jsp(serlvet)中,页面的"变换"有两种方式,第一重定向,第二转发: 先说重定向,它的调用方式是这样的 response.sendredirect("uri"); 特点就是 转换后的uri地址会在地址栏显示不过之前的request里的数据不能传送给新的页面# 重定向就是,让服务器再发一个请求# 如下图,浏览器看到response里面的sendredirect,就会重新发一个请求,那么之前的请求所带的数据自然就没有了# 转发: 实现方式是这样的: Reque

jsp与servlet的区别

Servlet与Jsp的区别 * Servlet中没有内置对象,原来Jsp中的内置对象都是必须通过HttpServletRequest对象,或由 HttpServletResponse对象生成. * 对于静态的HTML标签,Servlet都必须使用页面输出流诼行输出. 总之,Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,至于Jsp中的 Java脚本如何镶嵌到一个类中,由Jsp容器完成.而Servlet则是个完整的Java类,这个类的Service 方法用于生

Servlet路径映射

Serlvlet路径映射 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url. 容器默认请求的是一个Servlet,所以不会直接根据路径从文件夹中查找文件,而是先从web.xml中根据<url-pattern>查找对应的Servlet文件,匹配成功后就停止继续匹配:如果没有找到,才会从文件夹中找.都没有,则返回404. 匹配规则 url-pattern匹配规则只有以下五种(*为通配符): ■ 以"/"字符开

Servlet路径跳转问题

Servlet中路径跳转 相对路径         注意这里的相对含义,相对于谁而言 经过多次试验总结,servlet相对路径跳转相对于servlet配置的xml路径(或servlet3.0注解路径) 如下: //XML文件  <servlet-mapping> <servlet-name>RegServlet</servlet-name> <url-pattern>/servlet/RegServlet</url-pattern> </s

JSP与Servlet的关系

http://blog.csdn.net/kaixinbingju/article/details/9409927 Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容.Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类. 如图所示,Java提供一系列接口类(所谓接口类就是类中所有方法只提供方法声明,不提供任何的方法实现,这些类的实现就留给后继者去做.):

jsp中的路径

我的原则 所有路径一律使用绝对路径,就是以"/"开头的或者带host的路径.形如: /imgs/1.jpg <%= request.getContextPath()%>/imgs/1.jpg //推荐使用 http://localhost:8080/imgs/1.jpg 应该尽量避免使用类似".","./","../../"等类似的相对该文件位置的相对路径.一方面,这样当文件移动时,很容易出问题.另一方面,绝对路径