`
高级java工程师
  • 浏览: 405287 次
  • 性别: 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(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属性、调用...

    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. 下载并解压...

    JSTL、EL表达式使用教程

    在JSTL中,EL表达式经常与标签库结合使用,提供更强大的功能。例如,`&lt;c:out&gt;`和`&lt;c:set&gt;`标签都可以接受EL表达式作为参数。 总之,JSTL通过提供一套标准的标签库,大大简化了JSP页面的编写,使得页面逻辑更加清晰...

    struts jstl el表达式示例代码

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

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

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

Global site tag (gtag.js) - Google Analytics