栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSTL 和Filter过滤器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSTL 和Filter过滤器

学习目标

一、JSTL
二、Filter过滤器

学习内容 一、JSTL

1.概述:
JSTL标准标签库是一种自定义的标签库集合,实现了Java程序的基本功能:如数据操作管理,访问数据库,迭带和条件判断等等。它通过将常用的功能封装成简单的语法标记,有效的取代了JSP页面的scriptlets代码 ,简化了WEB的开发过程,使得开发人员可以利用自定义标签机制来创建JSP自定义标签。
2 .JSTL的下载和使用
步骤:
1.在jsp页面使用taglib指令引入标签库
2.导入jstl相关的jar包

3.测试一下。
在WebContent目录下创建一个名为test.jsp 的文件

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	

	

启动Tomcat服务器,打开浏览器,在地址栏中输入地址"http:/locahost:9999/chapter07/test.jsp" 访问test.jsp页面,此时,浏览器窗口中显示如下图所示:

3 .JSTL中的Core标签

1.标签:
向网页输出内容
基本语法:
第一种:

   

第二种:

 默认值 

default:如果value属性获取到了值,就输出这个值,如果没有获取到,就输出default属性对应的值。

escapeXml(默认值true):如果值为true,就会把html标记当成普通的字符串输出,如果值为false,就会正常解析html标记,正常输出。

例:在WebContent目录下创建一个名为c_out1的文件。
c_out1:

<%@ page language="java" contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	<%--第1个out标签 --%>
	userName属性的值为:
	
	
<%--第2个out标签 --%> userName属性的值为: unknown

j结果为:

如果不想让标签输出默认值,可以在客户端访问C_ _out1.jsp 页面时传递一个参数,在浏览器地址栏中输入http://ocalhost:9999/chapter07/c _out1.jsp?userame=itcast ,此时,浏览器窗口中显示的结果如下图所示。

在WebContent目录下创建一个名为c_out2。

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	
		
	



结果如下图所示:

2.标签:
进行条件判断,和java类中的if很相似
基本语法:
第一种:


第二种:

 标签体内容 

例:在WebContent目录下创建一个名为c_if.jsp的文件,
c_if.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	
	
		This is you first visit. Welcome to the site!
	




3.标签:
进行条件判断,和java类中的if,else if(),else if()—else很相似
基本语法:

---->if
				标签体内容---->else if()
				标签体内容
				------------
				标签体内容----->else
			

例:在WebContent目录下创建一个名为c_choose.jsp 的文件。

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	
	   
 		   unKnown user.
 	   
	   
 		   ${ param.username} is manager.
 	   
	   
  		   ${ param.username} is employee.
 	   
	



4.标签:
遍历域对象中的数组和集合,和java类中的for循环很相似
基本语法:
第一种:


普通for:

for(int i=0;i<数组或集合的长度;i++){ yuanshu }

第二种:


增强for:
for(String yuanshu: 数组或者集合){ yuanshu }
varStatus属性:count表示序号,index表示索引(下标),
first判断是否是第一个元素,last判断是否是最后一个元素

例:在WebContent目录下创建一个名为c_foreach1.jsp 的文件。

<%@  page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	<%
		String[] fruits = { "apple", "orange", "grape", "banana" };
	%>
	String数组中的元素:
	
${name}
<% Map userMap = new HashMap(); userMap.put("Tom", "123"); userMap.put("Make", "123"); userMap.put("Lina", "123"); %>
HashMap集合中的元素:
${entry.key} ${entry.value}

结果如下图所示:

在项目的WebContent 目录下,创建一个名为c_foreach2.jsp的文件,该文件中使用了标签的begin、end 和step属性

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



  colorsList集合(指定迭代范围和步长)
<% List colorsList=new ArrayList(); colorsList.add("red"); colorsList.add("yellow"); colorsList.add("blue"); colorsList.add("green"); colorsList.add("black"); %> ${color} 

结果如下图所示:

在项目的WebContent 目录下,创建一个名为c_foreach3.jsp的文件。

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	<%
		List userList = new ArrayList();
		userList.add("Tom");
		userList.add("Make");
		userList.add("Lina");
	%>
	
			
序号 索引 是否为第一个元素 是否为最后一个元素 元素的值
${status.count} ${status.index} ${status.first} ${status.last} ${name}

结果为:

5.标签和标签:
设置路径和传递参数。
基本语法:



		-------------

开发的访问路径:
1.绝对路径:
第一种:http://localhost:8080/chapter07/login.html
第二种:/chapter07/login.html
2.相对路径:
直接写访问的资源路径:比如 login.html
例如:在项目的WebContent 目录下,创建一个名为c_url.jsp的文件

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	yanmin使用绝对路径构造URL:
register.jsp
yanmin使用相对路径构造URL:
register.jsp

二、 Filter 过滤器

1.什么是Filter
Fiter被称作过滤器,其基本功能就是对Servlet 容器调用ServletServlet进行响应处理前后实现-些特殊功能。这就好比现实中的污水净化设备,它可以事,个过滤器,专门用于过滤污水杂质.

2.实现第一个Filter程序
为了帮助读者快速了解Fiter的开发过程,接下来,分步票实现一个le程序, 演示Fter程序如何对Senlet程序的调用过程进行拦截的,具体如下。
(1) 首先在Elise中创建一个名为chapter08的Web 项目,然后在该项目的 src目录下创建一个名为cn.itcast.chapter08.fiter 包,最后在该包下创建一个名为MySenVet的Senet类,该类用于访问时在浏览器中输出"Hello MySerlet"。
例:MySerlet 类的具体代码如下图所示:

package cn.itcast.chapter08.filter;
import java.io.*; 
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException  {
			response.getWriter().write("Hello MyServlet") ;
	}
			public void doPost(HttpServletRequest request,
			HttpServletResponse response)
			throws ServletException,IOException {
					doGet(request, response);
}
}

在cn.itcast.chaptero8.fiter 包中创建一一个名为MyFilter 的Fiter 类,该类用于拦截MyServlet程序。
MyFilter 的实现代码如下:

package cn.itcast.chapter08.filter;

import java.io.*;
import javax.servlet.Filter;
import javax.servlet.*;
 
public class myFilter implements Filter {
 
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}
 
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		PrintWriter out =response.getWriter();
		out.write("Hello MyFilter!");
	}
    
	public void destroy() {
		// TODO Auto-generated method stub
	}
}

3.Filter映射

3.1 拦截不同方式的访问请求
在web.xml文件中,一(个ilter-mapping>元素用于配置一个Fller 所负责拦数的资源。元素中有一个特殊的子元素 1 ) REQUEST
当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问的,那么该过滤器将不会被调用。
2 ) INCLUDE
如果目标资源是通过RequestDispatcher的include()方法访问的,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
3 ) FORWARD
如果目标资源是通过RequsDispatcler的foward)方法访问的,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
4) ERROR !
如果目标资源是通过声明式异常处理机制调用的,那么该过滤器将被调用。除此之外,过滤器不会被调用。
为了更好地理解上述4个值的作用,接下来以FORWARD为例,分步骤演示Filter对转发请求的拦截效果。
2)为了防止其他过滤器影响此次Fller 链的演示效果,请先在web xml文件中注释掉其他过滤器的配置信息。
然后,将MyFilter01和MyFilter02过滤器的映射信息配置在MyServlet配置信息前面,具体如下所示。

2020080605041

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号