JavaWeb 学习笔记 day08 EL表达式 JSTL标签 文件的上传

这篇博客主要介绍了JavaWeb中的EL表达式,包括其简洁的优势、搜索域数据的顺序、点运算与中括号运算以及11个隐含对象。接着讲解了JSTL标签库,如if、choose-when-otherwse、forEach等,最后探讨了文件上传的相关内容。

JavaWeb 学习笔记 day08

EL表达式

简介:EL表达式的作用就是替换掉 jsp 页面的表达式脚本,因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。

  1. EL 表达式搜索域数据的顺序
<body> 
<% //往四个域中都保存了相同的 key 的数据。 
	request.setAttribute("key", "request");
	session.setAttribute("key", "session"); 
	application.setAttribute("key", "application"); 
	pageContext.setAttribute("key", "pageContext"); 
%>
/*
默认按照四个域从小到大的顺序查找,找到就输出
*/
${ key } </body>
  1. EL 表达式的 “.” 运算和 [] 运算
    ① 点运算,可以输出 Bean 对象中某个属性的值。实际上是调用该属性的getter方法
    ② 中括号运算,可以输出有序集合中某个元素的值。 并且中括号运算还可以输出 map 集合中 key 里含有特殊字符的 key 的值。
<body> 
<% 
	 Map<String,Object> map = new HashMap<String, Object>();
	 map.put("a.a.a", "aaaValue"); 
	 map.put("b+b+b", "bbbValue"); 
	 map.put("c-c-c", "cccValue"); 
	 request.setAttribute("map", map); 
 %> 
 ${ map['a.a.a'] } <br> 
 ${ map["b+b+b"] } <br> 
 ${ map['c-c-c'] } <br> 
 </body>
  1. EL 表达式的 11 个隐含对象
    pageContext PageContextImpl 它可以获取 jsp 中的九大内置对象
    pageScope Map<String,Object> 它可以获取 pageContext 域中的数据
    requestScope Map<String,Object> 它可以获取 Request 域中的数据
    sessionScope Map<String,Object> 它可以获取 Session 域中的数据
    applicationScope Map<String,Object> 它可以获取 ServletContext 域中的数据
    param Map<String,String> 它可以获取请求参数的值
    paramValues Map<String,String[]> 它也可以获取请求参数的值,获取多个值的时候使用。
    header Map<String,String> 它可以获取请求头的信息
    headerValues Map<String,String[]> 它可以获取请求头的信息,它可以获取多个值的情况
    cookie Map<String,Cookie> 它可以获取当前请求的 Cookie 信息
    initParam Map<String,String> 它可以获取在 web.xml 中配置的< context-param>上下文参数

JSTL 标签库

  1. < c:if /> if 标签用来做 if 判断。
<c:if test="${ 12 == 12 }"> 
	<h1>12 等于 12</h1> 
</c:if> 
<c:if test="${ 12 != 12 }"> 
	<h1>12 不等于 12</h1> 
</c:if>
  1. < c:choose> < c:when> < c:otherwise> 多路判断。跟 switch … case … default 非常接近

  2. < c:forEach /> 遍历输出使用。

<% 
request.setAttribute("arr", new String[]{"18610541354","18688886666","18699998888"}); 
%>
<c:forEach items="${ requestScope.arr }" var="item"> 
	${ item } <br> 
</c:forEach>

文件上传

public class UploadServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if (ServletFileUpload.isMultipartContent(req)) {
            // 创建 FileItemFactory 工厂实现类
            FileItemFactory fileItemFactory = new DiskFileItemFactory();
            // 创建用于解析上传数据的工具类 ServletFileUpload 类
            ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
            try {// 解析上传的数据,得到每一个表单项
                List<FileItem> list = servletFileUpload.parseRequest(req);
                // 循环判断,每一个表单项,是普通类型,还是上传的文件
                for (FileItem fileItem : list) {
                    if (fileItem.isFormField()) {
                        // 普通表单项
                        System.out.println("表单项的 name 属性值:" + fileItem.getFieldName());
                        // 参数 UTF-8.解决乱码问题
                        System.out.println("表单项的 value 属性值:" + fileItem.getString("UTF-8"));
                    } else { // 上传的文件
                        System.out.println("表单项的 name 属性值:" + fileItem.getFieldName());
                        System.out.println("上传的文件名:" + fileItem.getName());
                        fileItem.write(new File("d:\\" + fileItem.getName()));
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值