2021-03-14

ServletConfig,ServletContext

1.ServletConfig:Servlet的配置对象,容器在初始化Servlet时通过它传递信息给Servlet。
2.ServletContext:上下文对象,提供了一系列方法供Servlet与Web容器交互。
2、创建时机

  1. ServletConfig:在容器初始化Servlet的时候,并为其提供上下文初始化参数的名/值对的引用。
    2)ServletContext:容器启动的时候,并为其提供Servlet初始化参数的名/值对的引用。

3、作用范围(可见性)
1)ServletContext:每个JVM中每个Web应用一个ServletContext。
2)ServletConfig:每个JVM中每个Web应用的每个Servlet一个ServletConfig。
所以ServletConfig=Servlet初始化参数,ServletContext=上下文初始化参数。

Servlet

1.实现上讲 servlet可以响应热河类型的请求,但绝大多数只用来扩展基于HTTP协议的web
工作模式
1.客户端发送请求至服务器
2.服务器启动并调用servlet,servlet根据客户端请求生成响应内容并传给服务器
3.服务器将响应返回给客户端
代码:

public class UserServlet implements Servlet{
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("初始化参数方法");
    }
     @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("执行业务逻辑方法");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("摧毁servlet");
    }
}

HttpServletRequest,HttpServletResponse

重定向:会改变地址栏;会使request中的数据丢失;属于两次请求,两次响应
转发:不会改变地址栏;可以保存request中的数据;属于一次请求,一次响应

Cookie、Session

Cookie:通过客户端记录信息;Cookie是用户请求服务器后,服务器发送给客户端的一个辨别标识,保存在客户端,当客户端再次向服务器发送请求时,会携带这个标识,服务器通过标识来识别客户端的身份或状态。一般用在保持用户登陆状态,记录用户名。
Session:通过服务器记录信息;session对象是第一次请求服务器时创建。

Filter、Listener

Filter:在servlet之前和之后都会被执行

应用:防止用户未登录就执行后续操作
设置编码方式
加密解密
非法文字筛选
下载资源的限制
实例代码:

public class LoginFilter 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 {
        System.out.println("执行登录过滤器");
        HttpServletRequest request= (HttpServletRequest) servletRequest;
        HttpServletResponse response= (HttpServletResponse) servletResponse;
        request.setCharacterEncoding("utf-8");
        //登陆验证过滤器
        String name= (String) request.getSession().getAttribute("name");
        String requsetURI=request.getRequestURI();
        if(requsetURI.endsWith("/")||requsetURI.endsWith("/login")||requsetURI.endsWith("/insert")||requsetURI.endsWith("insert.jsp")||requsetURI.endsWith("index.jsp")||requsetURI.endsWith("insertsuccess.jsp")||requsetURI.endsWith("inserterror.jsp")||requsetURI.endsWith("insertsuccess.jsp")||requsetURI.endsWith("yhmcf.jsp")||requsetURI.endsWith("message.jsp")||requsetURI.endsWith("login.jsp")||name!=null){
           filterChain.doFilter(servletRequest,servletResponse);//读取下一个servlet或者filter
       }else {
            response.sendRedirect("message.jsp");
            return;
        }

    }

    @Override
    public void destroy() {
        System.out.println("销毁登录过滤器");
    }
}

Listener:
事件源:request,session,servletContext
分类
按监听对象分:servletRequest,ServletContext,HttpSession
按监听内容分:监听域对象的创建与销毁,监听对象的属性变化

AJAX

是与服务器交换数据并更新部分网页的艺术,再不加载整个页面的情况下
核心:XMLHttpRequest对象
原理:相当于在用户和服务器之间加了一个中间层(AJAX引擎)使用户操作与服务器响应异步化。

 $.ajax({
                    url:"testuname",
                    data:"uname="+uname,
                    type:"get",
                    dataType:"text",
                    success:function (result) {//通过参数来接受服务器返回的内容
                        $("#rs").html(result);
                    }
                });
              /*post方法
             $.post("/testuname","uname="+uname,function (result) {
                 $("#rs").html(result);
             });*/
                //get方法
                // $.get("/testuname","uname="+uname,function (result) {
                //     $("#rs").html(result);
                // });

前后端分离

优点:提高工作效率,分工明确,增强代码的可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值