Java 如何使字符串包含签入EL

Java 如何使字符串包含签入EL,java,jsp,struts,el,Java,Jsp,Struts,El,该应用程序是使用Struts 1.2框架开发的。我想在jsp文件中获取请求头主机名,并识别从头读取user-agent值的浏览器 下面是我使用Scriptlet编写的代码: String userAgent = request.getHeader("user-Agent"); if(userAgent.contains("Chrome")){ userAgent = "Chrome"; }else if(userAgent.contains("Android")){ userAg

该应用程序是使用Struts 1.2框架开发的。我想在jsp文件中获取请求头主机名,并识别从头读取
user-agent
值的浏览器

下面是我使用Scriptlet编写的代码:

String userAgent = request.getHeader("user-Agent");
if(userAgent.contains("Chrome")){
    userAgent = "Chrome";
}else if(userAgent.contains("Android")){
    userAgent = "Android";
}
代码运行良好。但我希望避免使用Scriptlet,因为它存在一些易受攻击的跨站点脚本问题。因此,为了在EL中执行相同的操作,我可以使用以下方法获取标题:

Host is: ${header["user-agent"]}
但是我不知道如何执行
包含的
签入EL


这个应用程序运行在Struts 1.2框架上,如果框架提供了一些更好的方法来读取JSP中的头值,那么也请让我知道它。否则EL也可以。

您需要使用
fn:contains
fn:containsIgnoreCase

<c:set var="userAgent" value="${header['user-agent']}"/>

然后:

 <c:if test="${fn:containsIgnoreCase(userAgent, 'Chrome')}">
  <!-- TODO: -->
 </c:if/>

嘿,我不知道JSTL中的
fn
+1美元。你能让我知道在那里面还有什么其他可用的选项吗?除了JSTL.jar之外,我还需要为此添加其他jar吗?请让我知道这一点。签出此链接'