JSP&EL表达式java编译路径

https://blog.csdn.net/u010010428/article/details/51246491
https://www.cnblogs.com/zhangminghui/p/4122821.html

<img src="${pageContext.request.contextPath }/client/images/miniicon.gif" width="9" height="6" />&nbsp;&nbsp;&nbsp;&nbsp; 
<a href="${pageContext.request.contextPath }/client/modifyuserinfo.jsp">用户信息修改</a>
							
// 重定向到首页
response.sendRedirect(request.getContextPath() + "/index.jsp");

那么我就好奇

${pageContext.request.contextPath}<%=request.getContextPath()%><br/> 

获取到具体值到底是什么,
他没有获取我想要的http://localName.com:port/项目名称(上下文)吗??
通过实验我发现,只是简单做个测试,代码不规范: ```

"request.getContextPath()的值是   "<%=request.getContextPath()%><br/>
"pageContext.request.contextPath的值是"${pageContext.request.contextPath}<br/>

在这里插入图片描述

通过运行我们发现了
<%=request.getContextPath()%>和${pageContext.request.contextPath}获
取的结果都是项目名(上下文),

总结:

JSP页面提交表单给servlet时有两种写法:

(一). 相对路径: …

(二). 绝对路径:

  1. ...

    其实绝对路径还有第二种方法:

  2. <formaction="<%=request.getContextPath()%>/servlet/RegisterLoginServlet " method=post>…

${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%>
。也就是取出部署的应用程序名或者是当前的项目名称

比如我的项目名称是demo1在浏览器中输入为http://localhost:8080/demo1/a.jsp
${pageContext.request.contextPath}或<%=request.getContextPath()%>

取出来的就是/demo1, 而"/"代表的含义就是http://localhost:8080

故有时候项目中这样写${pageContext.request.contextPath}/a.jsp

以访问的jsp为:http://localhost:8080/dmsd-itoo-exam-log-web/course/index.jsp,

工程名为/dmsd-itoo-exam-log-web为例:request.getContextPath(),得到工程名:/dmsd-itoo-exam-log-web;

注意 : 是 / 加上 工程名: 右斜杠+工程名 不是单单工程名,本质是绝对路径 ,/之前加上 localhost:8080
就可以直接在访问页面

当你把Web工程发布到Tomcat上,工程下src目录是为空的,
你需要访问的servlet应该是通过web.xml中的配置文件设置的servlet访问路径,
web.xml是Web工程整个的配置文件,

依此我认为servlet的访问路径
http://localhost:(Tomcat设置的端口8080)/工程名/web.xml中相应设置的servlet访问路径。
jsp页面部署到Tomcat上时,是直接在工程名文件下的,所以就能通过
http://localhost:(Tomcat设置的端口8080)/工程名/abc.jsp访问。
希望对你有帮助!

我们常常在WEB项目中要写很多的访问路径,
比如说/good/target.jsp;目录结构中从来不会带有项目目录结构的WebContent?
这到底的为什么呢?

我们知道WEB项目是放在容器上运行的,
而Java的源码是不能直接运行,需要经过编译部署才能在容器上运行,
那么线索就来了,容器上运行的是编译的结果,
自然就不是项目本身(这里指的是项目本身的目录结构);

所以所有的访问路径是按照编译后的路径
看下WEB工程的目录结构和编译结果的目录结构

左边WEB项目的src的源码文件–>左边build下的.class的字节码文件,
也就是右边容器编译结果路径的WEB-INF下的classes文件

左边WEB项目的WebContent–>生成右边整个容器编译结果;
也就是说右边编译的结果的主体内容就是左边WebContent里面的东西
在这里插入图片描述
访问路径是通过访问编译结果的工程名再到下面的文件,所以,访问路径不需要写上“WebConten”
在这里插入图片描述

<a href="${pageContext.request.contextPath }/index.jsp">
<a href="${pageContext.request.contextPath }/index.jsp">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;
<a href="${pageContext.request.contextPath }/client/myAccount.jsp">我的账户</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;
<a href="${pageContext.request.contextPath }/findOrderByUser">订单查询</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;订单详细信息
<a href="${pageContext.request.contextPath }/index.jsp">首页</a>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;&nbsp;&nbsp;<a
request.getRequestDispatcher("/client/login.jsp").forward(request, response);
response.sendRedirect(request.getContextPath() + "/admin/login/home.jsp");
response.sendRedirect(request.getContextPath() + "/client/myAccount.jsp");
				
			

JSP
概念:
*Java Server Pages:java服务器端页面

一个特殊的页面,其中既可以定义html标签,也可以定义java代码
简化书写

在这里插入图片描述
EL表达式

替代和简化jsp页面中java代码的编写

功能:
获取域中的值
1.el表达式只能从域对象中获取值----域
2.语法:${域的名称.键名}:从指定域中获取指定键的值
*域的名称
a.pageScope—pageContext
b.requestScope—request
c.sessionScore—session
d.applicationScope—application(ServletContext)
*在request域中存储了name=张三
*${requestScope.name}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值