`
高级java工程师
  • 浏览: 409300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jstl表达式的使用

阅读更多

目录
1 STRTUS2 和 EL,JSTL 2
1.1 STRUTS2,EL,JSTL标签 2
1.1.1 struts2截取一段字符串 (struts2, fn) 2
1.1.1 Struts2 获得长度 2
1.1.2 <s:if><c:if > 2
1.1.3 Struts2拦截器 用户登录验证(2009-12-25 12:52:56) 3

1 STRTUS2 和 EL,JSTL
1.1 STRUTS2,EL,JSTL标签
1.1.1 STRUTS2截取一段字符串 (STRUTS2, FN)

Struts2 标签的特性支持大部分java方法
<s:property value=" dateshanggang.substring(0,10)" />
EX:
<s:property value="dateshanggang.substring(11,dateshanggang.length())" />
Fn:需要导入
--标签库
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
--从什么地方拆分
<c:set var="HH">${fn:substringBefore(chidaoTime/3600,'.')}</c:set>
--list大小是否给空
<c:if test="${empty list || fn:length(list) == 0}"> 没有记录哦 </c:if>
EX:
<c:if test="${empty list || fn:length(list) == 0}"> 没有记录哦 </c:if>
<c:set var="HH">${fn:substringBefore(chidaoTime/3600,'.')}</c:set>
1.1.1 STRUTS2 获得长度
<s:property value=" dateshanggang.length())" />
{empty list || fn:length(list) == 0}
${fn:length(property)}

1.1.2 <S:IF><C:IF >
C标签没有 <c:else> 只有单<c:if>
而<s:if>有<s:else> 可以配对使用
但是能用<c:if> 尽量不要用<s:if>
原因? 自己想吧!
EX:
<c:if test="${fn:length(content) <= 8}" var="ifresult">
<s:property value="content" />
</c:if>
<c:if test="${!ifresult}">
<s:property value="content.substring(0,8)" />..</a>&nbsp;
</c:if>
EX:<s:if><s:else>


1.1.3 STRUTS2拦截器 用户登录验证(2009-12-25 12:52:56)

Struts2拦截器 用户登录验证(2009-12-25 12:52:56)转载标签:杂谈 

实现方式:
实现Interceptor接口

init() {} 初始化时调用
destroy() {} 销毁时调用
class MyInterceptor implements Interceptor {
private String hello;
//setter...getter...
public void init() {
  System.out.println("init()...");
  System.out.println( hello );
}
public void destroy() {
  System.out.println("destroy()...");
}
public String intercept(ActionInvocation invocation) throws Exception {
  System.out.println("intercept()1...");
  //拦截器有拦截器站
  //invoke()将判断是否还有下一个拦截器,有就执行下一个拦截器,没有则开始执行被拦截的类
  String result = invocation.invoke();
  System.out.println("finish1...");
  return result;
}
继承AbstractInterceptor

该类实现了Interceptor接口,并且空实现了init()和destroy()方法

public class MyInterceptor extends AbstractInterceptor {

public String intercept(ActionInvocation invocation) throws Exception {

  System.out.println("intercept()2...");

  String result = invocation.invoke();

  System.out.println("finish2...");

  return result;

}

}


继承MethodFilterInterceptor

public class MyInterceptor3 extends MethodFilterInterceptor {
@Override
public void init() {
  System.out.println("init3");
}
//intercept()已经实现好了,不用去管他
//需要重写一下doIntercept
@Override
public String doIntercept(ActionInvocation invocation) throws Exception {
  // 取得请求相关的ActionContext实例
  ActionContext ctx = invocation.getInvocationContext();
  Map session = ctx.getSession();
  // 取出名为user的session属性
  User user = (User) session.get("user");
  // 如果没有登陆,返回重新登陆
  if (user != null) {
   return invocation.invoke();
  } else {
   return "login";
  }
}
}

MethodFilterInterceptor中包含两个protected的属性
Set includeMethods : 包含谁
Set excludeMethods : 排除谁

<interceptors>
<interceptor name="myInterceptor3" class="..."></interceptor>
</interceptors>

<action ...>
<result ...>...</result>
...

<interceptor-ref name="myInterceptor3" >
  包含                         要拦截方法 多个用逗号分开
  <param name="includeMethods">execute,test</param>
 
  排除                         不拦截的方法 多个用逗号分开
  <param name="excludeMethods">execute</param>
</interceptor-ref>
<interceptor-ref name="defaulteStack" />
</action>
struts.xml配置
<package name="default" namespace="" extends="struts-default" >
  <!-- 定义一个名为 authority的拦截器 --> 
        <interceptors>
            <!-- 定义权限检查拦截器 --> 
            <interceptor name="authority"
                class="com.cbiesepe.core.AuthorityInterceptor" />
                 
            <!-- 定义一个包含权限检查的拦截器栈 -->
            <interceptor-stack name="myDefaultStack"> 
                <!-- 定义拦截器栈包含authority拦截器 需要过滤的方法 login 要加在此 --> 
                <interceptor-ref name="authority">
     <param name="excludeMethods">login</param>
    </interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref> 
            </interceptor-stack>
        </interceptors>
        <!-- 设置全局默认的拦截器栈-->
        <default-interceptor-ref name="myDefaultStack" />
<global-results>
   <result name="main">/WEB-INF/jsp/main.jsp</result>
   <result name="login">/WEB-INF/jsp/user/login.jsp</result>
  </global-results>
</package>
以下包中只需继承default包即可实现拦截
<package name="user" namespace="/user" extends="default" >
  <action name="*User" class="userAction" method="{1}" >
   <result name="main">/WEB-INF/jsp/main.jsp</result>
   <result name="regist">/WEB-INF/jsp/user/regist.jsp</result>
   <result name="login">/WEB-INF/jsp/user/login.jsp</result>
   <result name="add">/WEB-INF/jsp/user/addUser.jsp</result>
   <result name="list" type="redirect">user/listUser.action</result>
   <result name="show">/WEB-INF/jsp/user/showUser.jsp</result>
   <result name="update">/WEB-INF/jsp/user/userUpdate.jsp</result>
   <result name="modpass">/WEB-INF/jsp/user/modPassword.jsp</result>
   <result name="success">/WEB-INF/jsp/user/userList.jsp</result>
  </action>
</package>
不需拦截的不用继承就可以
<package name="index" namespace="/" extends="struts-default" >
  <action name="channel" class="channelAction" method="index" >
   <result name="index">/index.jsp</result>
   <result name="register">/register.jsp</result>
   <result name="trader">/trader.jsp</result>
  </action>
</package>


分享到:
评论

相关推荐

    jstl表达式所需依赖jar包

    "jstl表达式所需依赖jar包"是指在项目中为了使用JSTL功能,必须引入的特定jar文件。这些jar文件包含了JSTL库的实现,使得开发者能够利用JSTL标签进行更高效、更灵活的编程。 JSTL的核心在于提供了一种与脚本语言...

    JSTL表达式详解(JAVA)

    其中,JSTL表达式是JSTL库中用于处理字符串和数组等数据的重要工具。在JSTL中,`fn`函数库提供了许多方便的字符串处理方法,让我们逐一详细讲解这些方法的使用和功能。 1. `fn:contains(string, substring)`:这个...

    jstl表达式的总结

    **JSTL(JavaServer Pages Standard Tag...总结,JSTL表达式是JSP开发中强大的工具,通过使用它,开发者可以编写出更清晰、更易于维护的代码,提高项目质量。深入理解并熟练运用JSTL,将极大地提升开发效率和代码质量。

    JSTL表达式描述

    JSTL表达式描述,通过该文档你可以很好的了解JSTL的运用。

    JSTL表达式

    ### JSTL表达式概述 JSTL(JavaServer Pages Standard Tag Library)是一种标准标签库,主要用于简化JSP页面的开发工作。通过一系列预定义的动作,开发者能够在无需编写自定义脚本的情况下完成复杂的任务,从而提高...

    EL&JSTL表达式.rar_JSTL_el

    描述中的"EL和JSTL表达式学习资料,精品总结"提示我们,这份压缩包可能包含了一份详尽的教程或总结,它将重点放在EL和JSTL的使用和表达式上,可能是通过实例和清晰的解释来帮助学习者快速掌握这些技术。 **EL...

    JSTL 表达式语言

    JSTL还引入了一种简化版的表达式语言(Expression Language,EL),它允许在不使用完整编程语言的情况下,为JSTL操作指定动态属性值。EL表达式通常在`${}`中编写,简化了页面中的数据绑定和逻辑表达。 总的来说,...

    为java_web项目添加spring_MVC框架(JSTL表达式)

    总的来说,"为java_web项目添加spring_MVC框架(JSTL表达式)"这个主题涵盖了Web开发中重要的两个技术点:Spring MVC的集成和JSTL的使用。通过学习这些内容,开发者可以更好地构建健壮、高效的Java Web应用程序。

    JSTL,EL表达式语法简介

    **JSTL与EL的协同工作**:在JSP页面中,EL表达式通常与JSTL标签一起使用,EL负责数据的获取和计算,而JSTL标签则负责页面的逻辑控制。例如,使用EL表达式和`&lt;c:if&gt;`标签可以实现简单的条件判断: ```jsp ${user != ...

    JSTL 表达式 入门 访问SQL和XML内容

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSP中的EL和JSTL表达式

    **JSP中的EL和JSTL表达式** 在JavaServer Pages (JSP) 开发中,EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)是两个非常重要的工具,它们极大地简化了页面逻辑,提高了代码的可读性和...

    EL、JSTL表达式

    ### EL与JSTL表达式详解 #### 一、EL表达式 **EL**(Expression Language)是一种简单且强大的表达式语言,它允许开发者在JSP页面中以非编程方式访问和操纵数据。EL的主要用途是在JSP文件中访问JavaBean属性、调用...

    JAVAEE实验报告EL表达式和jstl标签库的使用.pdf

    JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...

    EL、JSTL表达式案例精讲

    ### EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)表达式案例精讲 #### EL在JSP中的应用 EL,即Expression Language,是JSP技术中用于简化数据访问的一种强大工具。它允许开发者在...

    【JSTL表达式依赖包】jakarta-taglibs-standard-1.1.2

    4. **EL支持**:JSTL与EL(Expression Language)紧密结合,可以方便地在标签中使用EL表达式来获取和操作数据。 为了在IDEA中使用"jakarta-taglibs-standard-1.1.2",你需要按照以下步骤操作: 1. 下载并解压...

    struts jstl el表达式示例代码

    struts jstl el表达式示例代码 struts jstl el 表达式 源码

Global site tag (gtag.js) - Google Analytics