the5fire的技术博客

关注python、vim、linux、web开发和互联网--life is short, we need python.


JSTL的EL表达式简单使用

作者:the5fire | 标签:   | 发布:2010-12-31 9:45 a.m. | 阅读量: 3505, 3497

只是简单的一些代码,不过我想根据大家举一反三的能力,知道这些之后其他的都不是问题了,因为JSTL本身就是为了简单方便才出现的。 首先建立一个servlet:

package com.jstl;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JstlELServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //普通字符串
        req.setAttribute("hello", "Hello World");

        //结构
        Group group = new Group();//这个Group类你自己建就好了,里面只有一个私有的name属性,然后你给他生成get和set方法
        group.setName("组一");

        User user = new User();//这个User类也自己建吧,包括name,age,Group三个属性,还有各自的set和get方法
        user.setUsername("胡阳");
        user.setAge(23);
        user.setGroup(group);

        req.setAttribute("user", user);

        //map
        Map map = new HashMap();
        map.put("k1", "v1");
        map.put("k2", "v2");
        req.setAttribute("map", map);

        //字符串数组
        String[] strArray = new String[]{"a", "b", "c"};
        req.setAttribute("str_array", strArray);

        //对象数组
        User[] users = new User[9];
        for (int i = 0; i < users.length; i++) {
            users[i] = new User();
            users[i].setUsername("胡阳");
            users[i].setAge(23);
        }
        req.setAttribute("users", users);

        req.getRequestDispatcher("/jstl_el.jsp").forward(req, resp);
    }

}

然后配置一下web.xml文件,这里我不清楚为啥自己手动写一个就会导致tomcat启动不了,拷贝一份就可以,求解。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>JstlELServlet</servlet-name>
    <servlet-class>com.jstl.JstlELServlet</servlet-class>
    <load-on-startup>5</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JstlELServlet</servlet-name>
    <url-pattern>/servlet/JstlELServlet</url-pattern>
  </servlet-mapping>
</web-app>

再建立两个jsp页面:index.jsp和jstl_el.jsp:

Index.jsp:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<a href="servlet/JstlELServlet">测试EL</a>
</body>
</html>

Jstl_el.jsp:(这个里面的内容你要好好看看)

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>测试EL</title>
</head>
<body>
    <h1>测试EL表达式</h1>
    <hr>
    <li>普通字符串</li>
    hello(jsp脚本):<%=request.getAttribute("hello") %><br>
    hello(el表达式,语法:$和{}):${hello}<br>
    hello(el表达式,el的内置对象pageScope,requestScope,sessionScope,applicationScope)<br>
    如果不指定范围,它的搜索顺序为pageScope~applicationScope):${requestScope.hello}
    hello(el表达式,指定范围从session取得):${sessionScope.hello }

    <p>
        <li>结构</li>
        姓名:${user.username }<br>
        年龄:${user.age }<br>
        所属组:${user.group.name }<br>
    </p>
    <li>map</li><br>
    map.k1:${map.k1 }<br>
    map.k2:${map.k2 }<br>

    <li>字符串数组</li>
    strArray[1]:${str_array[1] }<br>
    <p>
    <li>对象数组,采用[]下标</li><br>
    users[1].username:${users[1].username }<br>

    <p>
    <li>list</li>
    userList[1].username:${userList[1].username }<br>

    <p>
    <li>EL表达式对运算符的支持</li>
    1+1=${1+1 }<br>
    10/4=${10/4 }<br>
    10 div 5=${10 div 5 }<br>
    10 mod 3=${10 mod 3 }<br>

</body>
</html>

好了,启动一下index.jsp页面,点击链接,完了。 JSTL使用文档下载:http://ishare.iask.sina.com.cn/f/8077298.html?retcode=0


----EOF-----

扫码关注,或者搜索微信公众号:码农悟凡


其他分类: