自学内容网 自学内容网

过滤器Filter,ajax异步请求,服务器响应的数据类型,json

 1.过滤器Filter

按照过滤规则筛选出想要的资源

 很多地方都需要判断是否登录,对每个资源进行判断,非常麻烦,可以使用过滤器在访问这些资源前进行判断。

案例:

package com.ghx.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;


@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
    //初始化   只会执行一次
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)servletRequest;
        HttpServletResponse response=(HttpServletResponse)servletResponse;
        String path = request.getRequestURI();
        //放行登录注册及其servlet
        if("/login.jsp".equals(path) || "/register.jsp".equals(path)  ||
                "/UserServlet".equals(path)
                || path.startsWith("/img")
        ){
            //放行
            filterChain.doFilter(request,servletResponse);
        }else {
            //登录放行
            HttpSession session = request.getSession();
            Object user = session.getAttribute("userinfo");
            if(user!=null){
                filterChain.doFilter(request,servletResponse);
            }else {
                //不登录返回登录页面
                response.sendRedirect("/login.jsp");
            }
        }
    }
//销毁方法
    @Override
    public void destroy() {
        System.out.println("关闭");
    }
}

2.ajax异步请求

ajax响应的不是地址或网页,而是一个数据,在哪里发送请求数据就响应到哪里

允许浏览器与服务器通信而无需刷新当前页面的技术都叫ajax

===========使用jquery

1.引入jquery的插件

<script src="/js/jquery-3.7.1.min.js"></script>

2.设计点击事件

3.服务器响应的数据类型

1.文本类型

2.xml类型        不建议使用

3.json类型

 4.json

JSON(JavaScript 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}
]

定义json对象  key必须用""   value可以是任意类型
<script>
    //定义json对象  key必须用""   value可以是任意类型
    var p={"name":"张三","age":19,"sex":"男","flag":true};
    alert(p.name);
    var ps=[
        {"name":"张三1","age":19,"sex":"男","flag":true},
        {"name":"张三2","age":19,"sex":"男","flag":true},
        {"name":"张三3","age":19,"sex":"男","flag":true}
    ]
    for(var i=0;i<ps.length;i++){
        alert(ps[i].name);
    }


</script>

案例

<body onload="loadBook()">



    <table>
        <tr>
            <th>书籍id</th>
            <th>书籍名</th>
            <th>价格</th>
            <th>出版社</th>
            <th>操作</th>
        </tr>
        <tbody id="tbodyBook">

        </tbody>

    </table>

</body>

 

<script src="/js/jquery-3.7.1.min.js"></script>
    <script>
        function loadBook(){
            $.post("/BookServlet",{"method":"getAll"},function (result){
                let elementById = document.getElementById("tbodyBook");
                var str="";
                for (var i=0;i<result.length;i++){
                    //alert(result[i].name);
                    str+="<tr>";
                    str+="<td>"+result[i].id+"</td>";
                    str+="<td>"+result[i].name+"</td>";
                    str+="<td>"+result[i].price+"</td>";
                    str+="<td>"+result[i].publisher+"</td>";
                    str+="<td><a onclick='deleteBook("+result[i].id+") '>删除</a>" +
                        "<a href='/BookServlet?method=getById&id="+result[i].id+"' >修改</a></td>";
                    str+="</tr>";
                }
                elementById.innerHTML=str;
            },"json")
        }
      
        function deleteBook(id) {
            if(confirm("确定要删除该条信息吗?")){
                $.get("/BookServlet",{"method":"delete","id":id},function (result){
                    if(result==1){
                        alert("删除成功");
                        loadBook();
                    }else {
                        alert("删除失败")
                    }
                });
            }

        }
    </script>
private void deleteById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        int id = Integer.parseInt(request.getParameter("id"));
        int i = bookDao.deleteBook(id);
        PrintWriter out = response.getWriter();
        out.print(i);
        out.flush();
        out.close();
       
    }


原文地址:https://blog.csdn.net/weixin_51635918/article/details/144355207

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!