兰州网站备案,注册安全工程师职业资格制度规定,郑州建设安全管理协会网站,高德vr全景地图下载一、过滤器#xff1a;
按照过滤规则筛选出想要的资源。 为什么使用过滤器#xff1f;
1. 很多地方都需要判断是否登录。如果我们在每个资源出进行判断#xff0c;非常麻烦。我们可以使用过滤器在访问这些资源前进行判断。 #xff08;这样就不用在主界面#xff0c;修改…一、过滤器
按照过滤规则筛选出想要的资源。 为什么使用过滤器
1. 很多地方都需要判断是否登录。如果我们在每个资源出进行判断非常麻烦。我们可以使用过滤器在访问这些资源前进行判断。 这样就不用在主界面修改删除界面加判断语句了 c:if test${sessionScope.usernull}c:redirect url/login.jsp//c:if--% 2.如何定义过滤器
创建一个类并实现Filter接口重写方法
案例01
如果不登录无法访问其他资源 package com.zyl.Filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * className: MyFilter * author: Zyl * date: 2024/12/9 * Version: 1.0 * description: */ WebFilter(urlPatterns /*) public class MyFilter implements Filter { Override //初始化过滤器 public void init(FilterConfig filterConfig) throws ServletException { // Filter.super.init(filterConfig); System.out.println(过滤器的初始方法只会调用一次); } Override //过滤器过滤方法 //Httpservlet是ServletRequest的子接口儿子接口功能更多强制转换 public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // System.out.println(过滤器的过滤方法会调用多次); HttpServletRequest req (HttpServletRequest) servletRequest; HttpServletResponse response (HttpServletResponse) servletResponse; //获取请求资源的路径 String path req.getServletPath(); //打印 System.out.println(path); //判断该路径是否为白名单 if(/login.jsp.equals(path)||/register.jsp.equals(path)||/user.equals(path)||path.startsWith(/images)){ //如果是就放行 filterChain.doFilter(servletRequest,servletResponse); }else{ //不是就判断是否登录登录就放行否则就跳转回登录页面 Object user req.getSession().getAttribute(user); if(user!null){ filterChain.doFilter(servletRequest,servletResponse); }else{ response.sendRedirect(/login.jsp); } } } Override //销毁过滤器 public void destroy() { // Filter.super.destroy(); System.out.println(过滤器销毁时调用该方法当服务器重启或关闭时); } } 注册过滤器--类似servlet !--注册过滤器-- filter filter-nameMyFilter/filter-name filter-classcom.zyl.Filter.MyFilter/filter-class /filter !--定义资格规则-- filter-mapping filter-nameMyFilter/filter-name !--/*:表示所有资源 /views/*: 访问/views下的资源时 *.do: 访问.do结尾的资源时 -- url-pattern/*/url-pattern /filter-mapping 基于注解 二、 ajax异步请求 1.ajax使用场景 2. 如何实现异步操作 自己通过js代码向后台发送异步请求. [非常复杂] 使用第三方封装好的js代码--【jquery axios结合vue使用更加完美】 我们现在使用jquery jquery就是对我们js的进一步封装使操作js更加方便的一个前端插件。 1. 第一步引入jquery的插件
jquery下载所有版本实时更新 %--引入jquery文件--%script src/js/jquery-3.5.1.min.js/script
2.点击事件 3. 服务器响应的数据类型 我们刚才服务器响应的数据类型都是文本类型。服务器响应的数据类型有三种: 文本类型。 基本数据类型的值字符串类型的值 xml格式类型. 不建议使用了。人工智能数据 name张三/name
age18/age
json格式的数据。--就是这种数据格式 三、什么是json JSONJavaScript Object Notation一种简单的数据格式比xml更轻巧。JSON 是JavaScript原生格式这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。 JSON的规则很简单对象是一个无序的“‘名称/值’对”集合。一个对象以“{”左括号开始“}”右括号结束。每个“名称”后跟一个“:”冒号“‘名称/值’对”之间使用“,”逗号分隔。 json对象: {k1:v1,k2:v2,k3:v3....} json对象集合: [ {k:v,k:v}, {k:v,k:v}, {k:v,k:v} ] 规则如下: 1映射用冒号“”表示。名称:值 2并列的数据之间用逗号“”分隔。名称1:值1,名称2:值2 3 映射的集合对象用大括号“{}”表示。{名称1:值1,名称2:值2} 4 并列数据的集合数组用方括号(“[]”)表示。 [ {名称1:值,名称2:值2}, {名称1:值,名称2:值2} ] 5 元素值可具有的类型string, number, object, array, true, false, null 6. 调用json对象中数据: 对象名.key 1. 使用封装的jar完成json的转换
第三方公司就封装一个jar。该jar中提供了很多类完成java转换成json对象。 public static void main(String[] args) { User usernew User(闫四安,19); String s JSON.toJSONString(user);//把一个java对象转换为json对象 System.out.println(s); //版本太高 ListUser listnew ArrayList(); list.add(new User(李佳琪,18)); list.add(new User(戴柏辛,18)); list.add(new User(左怀甫,18)); //[{name:李佳琪,age:18},{},{}] String s1 JSON.toJSONString(list); System.out.println(s1); } 综合案例 Ajax请求所有用户数据把服务器响应的数据以表格的形式展示 ajax2.jsp: %-- Created by IntelliJ IDEA. User: ldh Date: 2024/9/25 Time: 15:25 To change this template use File | Settings | File Templates. --% % page contentTypetext/html;charsetUTF-8 languagejava % html head titleTitle/title script typetext/javascript src/js/jquery.min.js/script /head %--onload:表示页面加载完毕后执行的js函数. onclick点击事件 onblur失焦事件 onload页面加载事件--% body οnlοadloadUser() table border1 cellspacing0 cellpadding0 width500 aligncenter tr th编号/th th账号/th th密码/th th姓名/th th操作/th /tr tbody iduserTable /tbody /table /body script function loadUser() { // 使用jQuery的get方法发送GET请求到/UserServlet回调函数处理返回的结果 $.get(/UserServlet, function (result) { // 获取页面上id为userTable的表格元素 var userTable document.getElementById(userTable); // 用于动态生成表格内容的字符串变量 var str ; // 遍历结果集生成表格的每一行内容 for (let i 0; i result.length; i) { // 开始拼接一个表格行 str tr; // 拼接用户ID单元格 str td result[i].id /td; // 拼接用户名单元格 str td result[i].username /td; // 拼接用户密码单元格 str td result[i].password /td; // 拼接用户真实姓名单元格 str td result[i].realname /td; // 拼接包含删除按钮的单元格 str tdbutton οnclick删除/button/td; // 完成一个表格行的拼接 str /tr; } // 将拼接好的字符串设置为表格的innerHTML动态更新表格内容 userTable.innerHTMLstr; }, json); // 指定返回数据类型为json } /script /html UserServlet: private void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ListUser users userDao.selectAll();//获取数据库中所有的用户 //把java集合对象转换为json集合对象 String json JSON.toJSONString(users); //获取输出对象 PrintWriter out resp.getWriter(); out.println(json); //刷新输出对象 out.flush(); //关闭输出对象 out.close(); }