文档章节

JSP&Servlet路径问题

fairy1674
 fairy1674
发布于 2015/12/22 22:24
字数 929
阅读 19
收藏 0
点赞 0
评论 0

如果带WebRoot,那么js、css、img都应该放到WebRoot目录下,否则访问会有问题。千万不要放在WEB-INF下,因为WEB-INF下的内容只有服务器转发可以访问到,出于安全考虑。

如果不带有WebRoot目录,那么可以放在WEB-INF外面(建立的文件夹中)。

一、JSP、Servlet中的相对路径

a) 在JSP

/”代表站点(服务器)根目录http://127.0.0.1/

b)     在Servlet

/”代表Web应用的根目录http://127.0.0.1/JSP_Servlet_Path/

request.getRequestDispatcher("/a/a.jsp").forward(request, response);

相对路径/a/a.jsp中/相对于web应用的根目录,所以相当于请求跳转到绝对路径

http://127.0.0.1/JSP_Servlet_Path/a/a.jsp

response.sendRedirect("/JSP_Servlet_Path/b/b.jsp");

因为重定向中的方法是传递给浏览器,用于重新发送请求的,而在浏览器端“/”代表,相对于站点根目录http://127.0.0.1/,所以这里必须要加上/JSP_Servlet_Path,这样浏览器重新请求的地址为:http://127.0.0.1/JSP_Servlet_Path/b/b.jsp

package com.jsp_servlet_path.rqq;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class JSP_Servlet extends HttpServlet {
 
    @Override
    public voiddoGet(HttpServletRequest request, HttpServletResponse response)
                    throwsServletException, IOException {
                    
           doPost(request,response);
    }
 
    @Override
    public voiddoPost(HttpServletRequest request, HttpServletResponse response)
                        throwsServletException, IOException {
               System.out.println(request.getContextPath());
                //请求转发,在服务器端,"/"代表(相对于)web应用http://localhost:8000/JSP_Servlet_Path/
               //所以请求转发的绝对路径为http://localhost:8000/JSP_Servlet_Path/a/a.jsp
                // request.getRequestDispatcher("/a/a.jsp").forward(request,response);
               //请求重定向,将方法中的地址参数传递给浏览器,让浏览器重新发送请求,
               //"/"代表(相对于)服务器站点http://localhost:8000/
               //所以相当于浏览器重新请求了绝对路径http://localhost:8000/JSP_Servlet_Path/b/b.jsp
               response.sendRedirect("/JSP_Servlet_Path/b/b.jsp");
               //response.sendRedirect(request.getContextPath()+ "/b/b.jsp");
    }
}

二、JSP中加入basePath

<%
    String path = request.getContextPath();
    String basePath= request.getScheme()+"://"
        +request.getServerName()+":"
        +request.getServerPort()+path+"/";
%>
<head>
<base href="<%=basePath%>">

    注:相当于所有的href相对路径前面都加入了:

               http://localhost:8000/JSP_Servlet_Path/

三、JSP与Servlet相互访问

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appversion="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>JSP_Servlet</servlet-name>
    <servlet-class>com.jsp_servlet_path.rqq.JSP_Servlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>CopyOfJSP_Servlet</servlet-name>
    <servlet-class>com.jsp_servlet_path.rqq.CopyOfJSP_Servlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>JSP_Servlet</servlet-name>
    <url-pattern>/servlet/JSP_Servlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CopyOfJSP_Servlet</servlet-name>
    <url-pattern>/servlet/CopyOfJSP_Servlet</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
<%@ page language="java"import="java.util.*"pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPEHTMLPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN">
<html>
  <head>
   <basehref="<%=basePath%>">
   
   <title>My JSP 'index.jsp' starting page</title>
         <metahttp-equiv="pragma"content="no-cache">
         <metahttp-equiv="cache-control"content="no-cache">
         <metahttp-equiv="expires"content="0">   
         <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
         <metahttp-equiv="description"content="This is my page">
         <!--
         <linkrel="stylesheet" type="text/css"href="styles.css">
         -->
  </head>
 
  <bodybackground="/JSP_Servlet_Path/img/main1.jpg">
   This is index.jsp page. <br>
   <%--href中隐含了basePath,因为<basehref="<%=basePath%>">--%>
   <ahref="a/a.jsp">a.jsp(a/a.jsp)</a><br/>
   <ahref="/JSP_Servlet_Path/a/a.jsp">a.jsp(/JSP_Servlet_Path/a/a.jsp)</a><br/>
   <ahref="a/c/c.jsp">c.jsp(a/c/c.jsp)</a><br/>
   <ahref="a/c/e/e.jsp">e.jsp(a/c/e/e.jsp)</a><br/>
   <imgsrc="/JSP_Servlet_Path/img/2012317253390833.jpg"><br/>
   <imgsrc="a/main1.jpg"><br/>
   <ahref="servlet/JSP_Servlet?i=0">JSP_Servlet(servlet/JSP_Servlet)</a>
<a href="/JSP_Servlet_Path/servlet/JSP_Servlet?i=0">
JSP_Servlet(/JSP_Servlet_Path/servlet/JSP_Servlet)</a><br/>
    <ahref="servlet/JSP_Servlet?i=100">请求JSP_Servlet,并转发给CopyOfJSP_Servlet</a>
  </body>
</html>
package com.jsp_servlet_path.rqq;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
public class JSP_Servlet extends HttpServlet {
 
    @Override
    public voiddoGet(HttpServletRequest request, HttpServletResponse response)
                    throwsServletException, IOException {
                    
           doPost(request,response);
    }
 
    @Override
    public voiddoPost(HttpServletRequest request, HttpServletResponse response)
                        throwsServletException, IOException {
            System.out.println(request.getContextPath());
            //请求转发,在服务器端,"/"代表(相对于)web应用http://localhost:8000/JSP_Servlet_Path/
            //所以请求转发的绝对路径为http://localhost:8000/JSP_Servlet_Path/a/a.jsp
            // request.getRequestDispatcher("/a/a.jsp").forward(request,response);
            //请求重定向,将方法中的地址参数传递给浏览器,让浏览器重新发送请求,
            //"/"代表(相对于)服务器站点http://localhost:8000/
            //所以相当于浏览器重新请求了绝对路径http://localhost:8000/JSP_Servlet_Path/b/b.jsp
            response.sendRedirect("/JSP_Servlet_Path/b/b.jsp");
            //response.sendRedirect(request.getContextPath()+ "/b/b.jsp");
             Stringstr_i = request.getParameter("i");
             int i =new Integer(str_i);
             switch(i) {
                    case 0:
                        request.getRequestDispatcher("/index.jsp").forward(request,response);
                        System.out.println("index.jsp");
                        break;
                    case 1:
                        request.getRequestDispatcher("/a/a.jsp").forward(request, response);
                        System.out.println("a.jsp");
                        break;
                    case 2:
                        request.getRequestDispatcher("/b/b.jsp").forward(request,response);
                        System.out.println("b.jsp");
                        break;
                    case 3:
                        request.getRequestDispatcher("/a/c/c.jsp").forward(request,response);
                        System.out.println("c.jsp");
                        break;
                    case 100:
                        request.getRequestDispatcher("/servlet/CopyOfJSP_Servlet").forward(request,response);
                        System.out.println("forward to CopyOfJSP_Servlet");
                        break;
                    default:
                        System.out.println("default");
                        return;
             }
    }
}


© 著作权归作者所有

共有 人打赏支持
fairy1674
粉丝 1
博文 87
码字总数 112947
作品 0
成都
程序员
javax.servlet.jsp.XXXX cannot be resolved to a typ

jsp&servlet报红线javax.servlet.jsp.XXXX cannot be resolved to a type类似错误解决办法 javax.servlet.jsp.JspException cannot be resolved to a type javax.servlet.jsp.PageContext ca......

writeademo
2016/08/01
23
0
jsp中9个内置对象与servlet对应关系

参考: 《jsp&servlet学习笔记.第2版.林信良》 《JSR-245 JavaServer Pages 2.2 Maintenance Release Specification》 隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWrit...

artshell
2014/02/05
0
0
Weblogic和tomcat的区别

Weblogic和tomcat的区别 介绍:weblogic是由美国bea公司出品的,他是基于javaEE的一个中间件。Weblogic 9.0的版本是现在最常用的。Weblogic是用于开发,集成、部署和管理大型分布式Web应用、...

zhaomb
2016/09/10
89
0
34岁!100天!学会Java编程(Day29-Day38)—Web后端编程

色彩 “我不想改变世界,我只是不喜欢平庸。” 小小地装了个13,不过照片里不是我,是我前两天看到的一张网图,不过我很喜欢。我们每天熙熙攘攘,庸庸碌碌,留给世界的只是背影,但是有谁知道...

魏小筠
2017/12/04
0
0
浅谈WebLogic和Tomcat

J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器。可以看出服务器在这种架构是非常重要的。 这几天接触到两种Java的web服务器,做项目用...

奋斗的小菜一碟
2015/11/12
0
0
Nginx配置文件下载出现 No such file or directory

nginx在配置访问路径的时候 ,不能将alias 的路径指定到linux服务器的/tmp 路径下。 如果指定到/tmp 路径下:再访问这个文件的时候会提示: 问题回放: nginx 是这么配置的:...

dev_zh
07/04
0
0
数据结构-迷宫问题(回溯法)

题目描述: 迷宫是一个二维矩阵,其中1为墙,0为路,入口在第一列,出口在最后一行。要求从入口开始,从出口结束,按照 上,下,左,右 的顺序来搜索路径.。 思路: 回溯法 + 试探法。回溯法可用栈或递...

sssssuuuuu666
2017/12/11
0
0
JFinal使用笔记1-部署demo项目到本地tomcat

尝试用JFinal开发个开源的社团管理系统,把开发过程中遇到的问题和解决办法记下来,以供参考。 部署jfinaldemofor_jsp到tomcat上 问题1、css, js文件加载失败。 原因:路径问题 解决办法: ...

土龙
2013/02/25
0
2
用Ford和Fulkerson的增广路径算法,解决网络中的最大流(flow)以及其衍生问题。

管道网络中每条边的最大通过能力(容量)是有限的,实际流量不超过容量。 最大流问题(maximum flow problem),一种组合最优化问题,就是要讨论如何充分利用装置的能力,使得运输的流量最大,...

linuxer
2017/11/11
0
0
Eclipse:Failed to load the JNI shared library

1.问题背景: 由于我之前使用jdk1.9学习,当使用Luke的时候发现jdk版本过高,需要向下配置jdk,就向朋友拷了一个安装包。重新配置路径后,便开始报错。 2.问题描述: Failed to load the JNI...

tinder_boy
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

50 行 Python 代码,带你追到最心爱的人

程序员世纪难题 人们一提到程序员第一反应就是:我知道!他们工资很高啊!但大部分都是单身狗,不懂得幽默风趣,只是每天穿格子 polo 衫的宅男一个。甚至程序员自己也这样形容自己:钱多话少...

猫咪编程
4分钟前
0
0
JAVA知识点随心记

1.Switch case具体的支持类型? Q:支持byte、short、char、int基本类型,枚举类型和String类型(JDK7以上支持),四种基本类型的包装类型也支持,但是原因在于触发了自动拆箱,将包装类型拆成了基本...

勤奋的蚂蚁
15分钟前
0
0
NoSQL

一、NoSQL介绍 NoSQL属于非关系型数据,mysql属于关系型数据库。 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当数据量非常大的时候...

人在艹木中
20分钟前
0
0
第17章MySQL主从配置

mysql安装总结 mysql主从准备工作: 准备两台机器,每台机器安装msyql服务,并启动mysql服务 mysql详细安装 1.首先下载二进制免编译的包,下载到/usr/local/src/目录下 2.解压压缩包 3.解压完...

Linux学习笔记
23分钟前
0
0
Redis高可用及分片集群

一、主从复制 使用异步复制 一个服务器可以有多个从服务器 从服务器也可以有自己的从服务器 复制功能不会阻塞主服务器 可以通过服务功能来上主服务器免于持久化操作,由从服务器去执行持久化...

Java大蜗牛
27分钟前
0
0
前端面试题汇总

最近在复习,准备找工作了,特此总结一下前端的相关知识。 1.获取浏览器URL中查询字符的参数: function getQuery(name){    var reg = new RegExp("(^|&)"+name+"=([^&]*)"(&|$));...

凛冬来袭
今天
0
0
可持续发展的学习道路

与其要求别人,不如提升自己 内心渴望进步 经常做出改变现有模式,不断学习 寻找资源,整合资源,不断熟练这种模式 渠道很重要 先打开新世界的航路

狮子狗
今天
0
0
apollox-lua开源项目 示例codepen2

今天在示例上增加了几个功能, 首先添加js array的标准库。 所有js array的方法目前都支持了。 添加查看code模式。 点击查看code可以看到生成的lua代码。默认web模式需要把标准库连接进来, ...

钟元OSS
今天
0
0
javascript性能优化之避免重复工作

javascript最重要也最根本的性能优化标准之一是避免工作,避免工作又包括两点,第一,不做不必要的工作,第二,不做重复的已经完成的工作。第一部分可以通过代码重构完成,第二部分不做重复的...

老韭菜
今天
0
0
缓存穿透、并发和雪崩那些事

0 题记 缓存穿透、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题,本文讲解其产生原因和解决方案。 缓存穿透通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪...

Java填坑之路
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部