package com.lee.elfunction;
public class Functions {
//字符串反转
public static String reverse(String text){
return new StringBuffer(text).reverse().toString();
}
//统计字符串的个数
public static int countChar(String text){
return text.length();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2eeweb-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>crazyit</short-name>
<uri>http://www.crazyit.org/tags</uri>
<function>
<name>reverse</name>
<function-class>com.lee.elfunction.Functions</function-class>
<function-signature>
java.lang.String reverse(java.lang.String)
</function-signature>
</function>
<function>
<name>countChar</name>
<function-class>com.lee.elfunction.Functions</function-class>
<function-signature>
int countChar(java.lang.String)
</function-signature>
</function>
</taglib>
<%@page import="java.util.Date"%>
<%@page import="java.util.Enumeration"%>
<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@ taglib uri="http://www.crazyit.org/tags" prefix="myfun"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%
out.println(request.getParameter("name"));
String method=request.getMethod();
if("get".equalsIgnoreCase(method)){
String rawQueryStr=request.getQueryString();
if(rawQueryStr!=null && rawQueryStr.length()>0){
out.println("原始查询字符串为:"+rawQueryStr+"<br/>");
String queryStr=URLDecoder.decode(rawQueryStr,"UTF-8");
out.println("解码后的查询字符串:"+queryStr+"<br/>");
//以& 分割查询字符串
String[]paramPairs=queryStr.split("&");
for(String param:paramPairs){
out.println("每个请求的参数名,值对为:"+param+"<br/>");
String[] nameValue=param.split("=");
out.println(nameValue[0]+"参数值是:"+nameValue[1]+"<br/>");
}
}
}else{
Enumeration<String> headNames=request.getHeaderNames();
while(headNames.hasMoreElements()){
String headname=headNames.nextElement();
out.println(headname+"--->"+request.getHeader(headname)+"<br/>");
}
}
%>
<body>
<form action="getPostParam.jsp" method="post">
<input name="name"/>
<input name="age"/>
<input type="submit" value="提交"/>
</form>
<c:set var="a" value="1"/>
<c:forEach begin="0" end="3">
<c:set var="a" value="${a+1}"/>
</c:forEach>
${a}
<%
out.println("现在的时间是:"+new Date());
%>
使用自定义表达式函数
${myfun:reverse(param["name"])}
</body>
</html>
分享到:
相关推荐
10. **生命周期方法**:Servlet 3.0引入了`init`和`destroy`方法的可选参数,使得开发者可以自定义初始化和销毁逻辑。 总之,Servlet 3.0的这些特性大大简化了Java Web开发,提高了开发效率,并为现代Web应用的需求...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
Servlet3.0与这些更新的版本兼容,提供了更强大的表达式语言和标签库,简化了视图层的开发。 9. **MIME类型匹配**: 新增`@.WebServlet(urlPatterns = {"/files/*"}, mimeTypes = {"text/plain", "application/...
Servlet 3.0规范允许实现自定义的Servlet容器,增强了扩展性和定制化能力。开发者可以根据需要创建特定功能的容器,而不仅仅是依赖于传统的大型应用服务器。 6. **多线程Servlet**: 以前的Servlet版本中,每个...
【标题】"javax.servlet3.0 javax.servlet_jsp2.0源码"涉及的是Java Servlet和JSP(JavaServer Pages)技术的核心API,这两个组件是Java Web开发的基础。源码分析可以帮助我们深入理解它们的工作原理。 【描述】...
对URL路径匹配规则进行了增强,允许使用通配符(*)和正则表达式来定义Servlet的映射,增强了路由的灵活性。 6. **WebSocket支持**: 虽然这不是Servlet 3.0规范的一部分,但它是Java EE 7(包括Servlet 3.1)的...
javax.servlet的jar包是Java Web开发中不可或缺的一部分,它提供了Servlet和JSP(JavaServer Pages)的核心API,使得开发者能够创建动态web应用程序。这个jar包是Java Servlet规范的一部分,由Java Community ...
这个版本包含了对Java EE 6 Web Profile的全面支持,其中包括Servlet 3.0、JSP 2.2和EL 2.2规范,这些都是构建现代Web应用的关键组件。 **Servlet 3.0**: Servlet 3.0是Java EE 6中的一项重要更新,引入了多项新...
2. **注解**:开发者可以通过在类或方法上添加注解来配置Servlet、过滤器和监听器,减少了web.xml配置文件的使用。 3. **可插拔的部署**:允许开发者使用自定义的部署机制,而无需修改Tomcat的核心代码。 4. **...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,通过覆盖特定方法(如init()、service()和destroy())来实现自定义逻辑。Servlet API提供了诸如HttpServletRequest和HttpServletResponse等接口,用来获取...
同时,Servlet 3.0还增加了注解驱动的配置,如`@WebServlet`,使得无需在web.xml中硬编码Servlet信息,增强了代码的可移植性。 2. **JSP 2.2**:增强了对表达式语言(Expression Language, EL)的支持,允许在JSP中...
1. **简化语法**:JSP 3.0引入了更简洁的声明标签,比如可以直接在HTML中声明Java表达式,无需使用`<%= %>`,而是使用`${}`。 2. **EL 3.0增强**:Expression Language (EL)也得到了升级,支持更多的数据类型操作,...
**Servlet 3.0**: Servlet 3.0是Java EE 6规范的一部分,引入了若干新特性,如异步处理能力,允许服务器在不阻塞线程的情况下处理请求,提高了服务器的并发性能。此外,Servlet 3.0还支持注解配置,使得web.xml部署...
4. **JSP基础**:讲解JSP语法,如何在页面中嵌入Java表达式、脚本元素和指令,以及JSP转换为Servlet的过程。 5. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:讨论如何使用EL...
2. **JSP 2.2支持**:与Servlet 3.0一起,Tomcat 7支持JSP 2.2版本,带来了更强大的EL(Expression Language)表达式,以及改进的标签库,使开发动态网页更加便捷。 3. **更好的安全性**:Tomcat 7增强了安全管理器...
10. **Servlet 3.0的新特性**:包括注解配置、异步处理、WebSocket支持等,提高了开发效率和应用性能。 通过学习《Core Servlet JSP 中文》,读者将能够熟练地运用Servlet和JSP进行Web应用开发,理解它们的工作原理...
7. **Servlet 3.0及以后版本的新特性** - **注解驱动的Servlet**:无需在`web.xml`中配置,直接通过注解实现Servlet的声明和映射。 - **异步Servlet处理**:支持非阻塞I/O,提高性能。 - **...
- **异步处理**:Servlet 3.0引入了异步处理的支持,使得Servlet能够处理长时间运行的任务而不会阻塞服务器线程。 #### 三、JSP技术详解 - **JSP基本语法**: - 脚本元素(Scriptlets):如`<% %>`用来执行Java...
- **Spring表达式语言**:引入了一种新的表达式语言,可用于XML和注解配置中。 - **RESTful Web服务支持**:增强了对RESTful Web服务的支持。 - **数据格式化**:支持注解驱动的数据格式化,如日期和货币格式。 - **...
1. **Tomcat 7.0特性**:Tomcat 7引入了一些重要的新特性,包括支持Servlet 3.0规范、JSP 2.2规范、EL 2.2表达式语言以及WebSocket API。这些改进提高了性能,简化了部署过程,并增强了对异步处理的支持。 2. **...