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

Java进阶-Filter & Listener & Ajax(十五)

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

文章目录
  • 一、案例一、过滤非法字符
    • 1.1、案例需求
    • 1.2、案例效果
    • 1.3、过滤器
      • 1.3.1 为什么要使用过滤器
      • 1.3.2 什么是过滤器
      • 1.3.3 过滤器应用场景
        • 1.3.3.1 过滤论坛中用户发表内容中的非法字符
        • 1.3.3.2 登录权限检查
      • 1.3.4、入门案例
      • 1.3.5、过滤器的生命周期
      • 1.3.6、单过滤器执行流程
      • 1.3.7 映射路径
        • 1.3.7.1 精确匹配模式(相当于servlet中的完全匹配)
        • 1.3.7.2 模糊匹配模式
      • 1.3.8 拦截方式
        • 1.3.9.1 request
        • 1.3.9.2 forward(只拦截请求转发)
      • 1.3.9 过滤器链的执行流程
    • 1.4 过滤非法字符案例实现
  • 二、案例二:解决全站乱码
    • 2.1案例需求
    • 2.2案例效果
    • 2.3 案例实现
  • 三、监听器(了解,后面会详细总结)
    • 3.1 什么是监听器
    • 3.2 监听器的创建
    • 3.3 第一类监听器(监听域对象的创建和销毁)
    • 3.4 第二类监听器
    • 3.5 第三类监听器
  • 四、Ajax
    • 4.1 什么是Ajax
    • 4.2 ajax的实现方式
    • 4.3 jQuery框架的ajax
      • 4.3.1 jQuery框架的ajax简介
      • 4.3.2 GET请求方式
        • 4.3.2.1 Get请求方式概述
        • 4.3.2.2 Get请求方式语法
        • 4.3.2.3 Get请求方式代码
      • 4.3.3 POST请求方式
        • 4.3.3.1 Post请求方式概述
        • 4.3.3.2 Post请求方式语法
        • 4.3.3.3 Post请求方式代码
      • 4.3.4 Ajax请求方式
        • 4.3.4.1 ajax请求方式概述
        • 4.3.4.2 ajax请求方式语法
  • 五、JSON
    • 5.1、json简述
    • 5.2、json语法格式
    • 5.3、json数据和java对象的相互转换
      • 5.3.1.使用jsonlib转换
      • 5.3.2.使用jackson转换
      • 5.3.3.Json数据格式转java对象
  • 六、案例一:检测用户名是否已被注册
    • 6.1 分析流程:
    • 6.2 案例实现
  • 七、案例二:内容自动补全

一、案例一、过滤非法字符 1.1、案例需求

当用户发出非法言论的时候,提示用户言论非法

1.2、案例效果

在表单中输入含有非法字符的言论,点击提交按钮

在页面显示
含有非法字符,请重新发表言论

如果不含有非法字符:
在页面显示:你发表的言论是:xxxxxx

1.3、过滤器 1.3.1 为什么要使用过滤器

在工作项目中,我们对访问某些资源的请求需要进条件的筛选、过滤。当这个请求满足特定的情况,才能让这 个请求访问目标资源,如果不满足条件,就不让访问目标资源。比如说:对于访问管理员功能的请求,我们应该对这样的请求进行管理员权限的判断。如果当前用户拥有管理员权限,可以访问。反之不可以。java开发中需要很多这样过滤功能的操作,所以需要知道过滤器。

1.3.2 什么是过滤器

Filter:是Java中预先定义好了的接口,可以过滤不同的内容,具体怎么过滤,需要使用者定义一个实现类,然后实现接口中的过滤方法,在方法中书写过滤的条件。filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行

Servlet 也需要实现一个接口HttpServlet
Filter 需要实现一个接口Filter接口

1.3.3 过滤器应用场景 1.3.3.1 过滤论坛中用户发表内容中的非法字符

当我们上论坛或者贴吧这类的网站浏览信息时,我们发现,很多评论有时候是携带脏词的。而这些脏词不能显示出来,使用**代替了。类似这类的脏词过滤,我们可以通过java中的过滤器,对请求参数中的脏词进行过滤

1.3.3.2 登录权限检查

当客户端浏览器发出一个请求,这个请求在访问到正真的目标资源之前,我们需要进行登录权限的检查。如果已经登录,我们就让这个请求通过,访问资源;如果没有登录,我们不能让请求访问目标资源。这样的操作需要在访问 具体资源进行条件的过滤,我们可以使用过滤器来完成。

1.3.4、入门案例

实现步骤:

  1. 创建一个普通java类, 去实现Filter接口, 重写filter 的方法
  2. 设置过滤的路径

(1)普通java类(ZhangServlet.java)

package com.zql;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/zhang")
public class ZhangServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//解决请求和响应乱码问题
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		
		System.out.println("张同学开车回家了。。。。。");

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

(2)过滤器设置(DemoFilter1.java)

package com.zql;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

@WebFilter("

@WebFilter("
@WebFilter("
		//json数组格式:
		
		//json复合形式:
		var list = [{"name":"Daniel","age":10},{"name":"Jenny","age":23}];
		alert(list[1].age);






5.3、json数据和java对象的相互转换

5.3.1.使用jsonlib转换

(1).单个JavaBean转json

(2)Map集合转json

(3)数组转json

(4)将list集合转json

实现步骤:

  1. 导包

  2. 先创建一个User.java

package com.zql.json;

import java.io.Serializable;



public class User implements Serializable{
	
	private String name;
	private int age;
	private String addr;
	
	
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public User(String name, int age, String addr) {
		super();
		this.name = name;
		this.age = age;
		this.addr = addr;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + ", addr=" + addr + "]";
	}
}
  1. Jsonlib.java
package com.zql.json;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;



public class Jsonlib {
	
	//(1).单个JavaBean转json
	@Test
	public void test1() {
		User user = new User();
		user.setName("Daniel");
		user.setAge(12);
		user.setAddr("深圳");
		JSONObject object = JSONObject.fromObject(user);
		System.out.println(object);
		
	}
	//(2)Map集合转json
	@Test
	public void test2() {
		Map map = new HashMap();
		map.put("name", "kendra");
		map.put("age", 22);
		map.put("addr", "上海");
		JSONObject object = JSONObject.fromObject(map);
		System.out.println(object);
		
		
	}
	//(3)数组转json
	@Test
	public void test3() {
		
		String[] arr = {"Wendy","33","甘肃"};
		
		JSONArray array = JSONArray.fromObject(arr);
		
		System.out.println(array);
		
	}
	
	//(4)将list集合转json
	@Test
	public void test4() {
		
		User user1 = new User("Daniel",12,"shenzhen");
		User user2 = new User("Amy",11,"nanshan");
		User user3 = new User("Nancy",11,"futian");
		
		List list = new ArrayList();
		
		list.add(user1);
		list.add(user1);
		list.add(user1);
		
		JSONArray array = JSONArray.fromObject(list);
		
		System.out.println(array);
		
	}
}

运行结果看下面

运行结果分别显示:
(1).单个JavaBean转json

{“addr”:“深圳”,“age”:12,“name”:“Daniel”}

(2)Map集合转json

{“name”:“kendra”,“addr”:“上海”,“age”:22}

(3)数组转json

[“Wendy”,“33”,“甘肃”]

(4)将list集合转json

[{“addr”:“shenzhen”,“age”:12,“name”:“Daniel”},{“addr”:“shenzhen”,“age”:12,“name”:“Daniel”},{“addr”:“shenzhen”,“age”:12,“name”:“Daniel”}]

5.3.2.使用jackson转换

JackSon.java(运行转换结果看下面)

package com.zql.json;


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

import org.junit.Test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;



public class JackSon {
	
		//(1). 单个JavaBean转json
		@Test
		public void test1() throws Exception {
			
			User user = new User();
			
			user.setName("Daniel");
			user.setAge(12);
			user.setAddr("shenzhen");
			
			ObjectMapper mapper = new ObjectMapper();
			
			String json = mapper.writeValueAsString(user);
			
			System.out.println(json);
		}
		//(2).Map集合转json
		@Test
		public void test2() throws Exception {
			
			Map map = new HashMap();
			
			map.put("name", "Daniel");
			map.put("age", "12");
			map.put("addr", "深圳");
			
			ObjectMapper mapper = new ObjectMapper();
			
			String json = mapper.writeValueAsString(map);
			
			System.out.println(json);
			
			
		}
		
		//(3)将list集合转json
		@Test
		public void test3() throws IOException {
			
			ArrayList list = new ArrayList();
			
			User user1 = new User("Daniel",12,"深圳");
			User user2 = new User("Wendy",22,"上海");
			User user3 = new User("Kendra",21,"上海");
			User user4 = new User("Guog",3,"兰州");
			
			list.add(user1);
			list.add(user2);
			list.add(user3);
			list.add(user4);
			
			ObjectMapper mapper = new ObjectMapper();
			
			String json = mapper.writeValueAsString(list);
			
			System.out.println(json);
						
		}
}

(1). 单个JavaBean转json

{“name”:“Daniel”,“age”:12,“addr”:“shenzhen”}

(2).Map集合转json

{“name”:“Daniel”,“addr”:“深圳”,“age”:“12”}

(3)将list集合转json

[{“name”:“Daniel”,“age”:12,“addr”:“深圳”},{“name”:“Wendy”,“age”:22,“addr”:“上海”},{“name”:“Kendra”,“age”:21,“addr”:“上海”},{“name”:“Guog”,“age”:3,“addr”:“兰州”}]

5.3.3.Json数据格式转java对象

(一般很少于,不需要手动转,有工具)

六、案例一:检测用户名是否已被注册 6.1 分析流程:

6.2 案例实现

(1)案例结构:


(2)sql:

CREATE DATABASE jsonu;
USE jsonu;
CREATE TABLE USER(
 uid VARCHAr(32) PRIMARY KEY,
 username VARCHAr(100),
 PASSWORD VARCHAr(100)
);
INSERT INTO USER VALUES ('001','Daniel','123'),('002','Andy','123');

(3) demo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here




	
会员注册USER REGISTER
用户名
密码

(4) 编写实体类 User.java

package com.zql.pojo;

import java.io.Serializable;



public class User implements Serializable{
	
	private String username;
	
	private String password;

	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + "]";
	}
	
}

(5) 编写UserServlet.java

package com.zql.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zql.pojo.User;
import com.zql.service.UserService;

@WebServlet("/check")
public class UserServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//解决请求和响应乱码问题
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		//获得前台传过来的数据
		//1.获得数据
		String username = request.getParameter("username");
		
		//System.out.println(username);
		//2.业务处理
		UserService us = new UserService();
		
		User user = us.checkByUsername(username);
	
		String str = "";
		
		if(user != null) {
			
			//System.out.println(111);
			str = "true";
		}else {
			
			str = "false";
		}
		
		response.getWriter().write(str);
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

(6)编写UserService.java

package com.zql.service;

import com.zql.dao.UserDao;
import com.zql.pojo.User;



public class UserService {

	public User checkByUsername(String username) {
		
		UserDao ud = new UserDao();
		
		User user = ud.checkByUsername(username);
		
		return user;
	}

}

(7)编写UserDao.java

package com.zql.dao;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import com.zql.pojo.User;
import com.zql.utils.C3P0Utils;



public class UserDao {

	public User checkByUsername(String username) {
		
		try {
		
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
	
		String sql = "select * from user where username=?";

		User user =  qr.query(sql, new BeanHandler(User.class),username);
		
		return  user;
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
}

运行结果:
数据库已有显示:

数据库没有显示:

七、案例二:内容自动补全

(1)结构类似案例六,表中随意加几个字段
(2)demo2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>



	


Insert title here




	



(3) User.java

package com.zql.pojo;

import java.io.Serializable;



public class User implements Serializable{
	
	private String uid;
	
	private String username;
	
	private String password;

	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(String uid, String username, String password) {
		super();
		this.uid = uid;
		this.username = username;
		this.password = password;
	}

	public String getUid() {
		return uid;
	}

	public void setUid(String uid) {
		this.uid = uid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Override
	public String toString() {
		return "User [u + uid + ", username=" + username + ", password=" + password + "]";
	}
}

(4)SearchServlet.java

package com.zql.servlet;

import java.io.IOException;
import java.util.List;

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

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.zql.pojo.User;
import com.zql.service.SearchService;


@WebServlet("/search")
public class SearchServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//解决请求和响应乱码问题
				request.setCharacterEncoding("UTF-8");
				response.setContentType("text/html;charset=utf-8");
				
				String word = request.getParameter("word");
				
				System.out.println(word);
				
				SearchService ss = new SearchService();
				
				List list = ss.searchWord(word);
				
				//System.out.println(list);
				
				//List转为json
				
				ObjectMapper mapper = new ObjectMapper();
				
				String json = mapper.writeValueAsString(list);
				
				System.out.println(json);
				
				response.getWriter().write(json);
	}
}

(5)SearchService.java

package com.zql.service;

import java.util.List;

import com.zql.dao.SearchDao;
import com.zql.pojo.User;



public class SearchService {

	public List searchWord(String word) {
		
		SearchDao sd = new SearchDao();
		
		List list = sd.searchWord(word);
		return list;
	}
}

(6)SearchDao.java

package com.zql.dao;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.zql.pojo.User;
import com.zql.utils.C3P0Utils;



public class SearchDao {

	public List searchWord(String word) {
		
		try {
		
		QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
		
		String sql = "select * from user where username like ?";
		
		Object[] param = {"%"+word+"%"};
		
		
		List list = qr.query(sql, new BeanListHandler(User.class));
		
		return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
}

最总显示为(http://localhost:8080/day19/demo2.jsp):

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

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

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