您的位置:首页 > Web前端 > JavaScript

JSTL 的 if else : 有 c:if 没有 else 的处理

2013-05-01 14:14 337 查看
jstl的c:if 没有else

想要实现if...else...:

可以用下面的解决

--------------------------------------------------------------------

结构:

<c:choose>

<c:when test=""> 如果
</c:when>

<c:otherwise> 否则
</c:otherwise>

</c:choose>

代码:

<c:choose>
<c:when test="${sessionScope.USERTYPE == 'inner'}">
<c:set value="${context_root}/igmgr/MEB004.dow" var="action" scope="page"/>
</c:when>
<c:when test="${sessionScope.USERTYPE == 'merc'}">
<c:set value="${context_root}/igmgr/MEB021.dow" var="action" scope="page"/>
</c:when>
<c:otherwise>
<c:set value="${context_root}/igmgr/MEB020.dow" var="action" scope="page"/>
</c:otherwise>
</c:choose>

**************************************************
在jsp页面中怎样用java语句或者EL表达式获得项目的完整路径?
发表于: 2009-05-09 15:29:05
在jsp页面中怎样用java语句或者EL表达式获得项目的完整路径?
比如项目的名称是:Hello
怎样用java语句或者EL表达式获得项目的完整路径是:http://localhost:8080/Hello

回复于: 2009-05-09 15:44:49
${pageContext.request.contextPath}

两种方式
1.
EL表达式
${pageContext.request.scheme}${'://'}${pageContext.request.serverName}${':'}${pageContext.request.serverPort}${pageContext.request.contextPath}
2.
java小脚本
<%=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath() %>

在eclipse中新建一个jsp页面,会自动生成如下代码:
<%@ page language="java" import="java.util.*" %>
<%@ page contentType="text/html; charset=GB2312" %>

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

********************************************************
request.getContextPath()用el表达式怎么写,绝对路径:request.getRealPath

<%=request.getContextPath()%>是解决相对路径的问题,可返回站点的根路径。
<a href="<%=request.getContextPath()%>/XXX.jsp"> //这样获得的是绝对路径
<a href="XXX.jsp" mce_href="XXX.jsp"> //这样获得的是相对路径
<a href="<%=request.getContextPath()%>/XXXX.jsp"> 能够更有效的防治连接的失效。
request.getContextPath()得到的是项目的名字,如果项目为根目录,则得到一个"",即空的字条串, 如果项目为dzjc, <%=request.getContextPath()% >/ 将得到dzjc/,服务器端的路径则会自动加上, <a href="XXX.jsp" mce_href="XXX.jsp"> 应该就是指当前路径下的这个xxx.jsp页面,有时候也可以在head里设置html:base 来解决路径的问题,不过用的最多的还是request.getContextPath。

用EL来表示相同功能的EL为:${pageContext.request.contextPath}
request.getScheme();
返回的协议名称,默认是http
request.getServerName()
返回的是你浏览器中显示的主机名
getServerPort()
获取服务器端口号
如果想得到工程文件的实际物理路径,可通过:<%=request.getRealPath("/")%>,这样页面就会输出:d:/web

现在request.getRealPath("") 这个方法已经不推荐使用了
可以使用
ServletContext.getRealPath(java.lang.String) instead. request.getSession().getServletContext().getRealPath() 得到工程文件的实际物理路径,也就是绝对地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: