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" />
<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时有两种写法:
(一). 相对路径: …
(二). 绝对路径:
- ...
其实绝对路径还有第二种方法:
-
<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> >
<a href="${pageContext.request.contextPath }/client/myAccount.jsp">我的账户</a> >
<a href="${pageContext.request.contextPath }/findOrderByUser">订单查询</a> > 订单详细信息
<a href="${pageContext.request.contextPath }/index.jsp">首页</a> > <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}