web01(service,servlet生命周期,ajax)

  •  定义Servlet的方法继承  HttpServlet
  • service的作用
    • 根据获取用户请求的方法不同,执行不同的方法
    • 浏览器使用get请求方法访问就执行doGet方法,使用post请求方式就执行dopos方法;
  • doget方法和dopost方法的区别:
  1. doget()方法通过将参数名和值追加在请求的URL后面来传递数据。这种方式请求中的参数值是可见的,同时URL对字符数目的限制,限制了用在客户端请求参数值的数目;
  2. doPost()方法把请求参数值放在请求体,通过post方法传递的敏感信息对外部客户是不可见的,而且可发送的参数的数目是没有限制的。
  • get请求方式和post请求方式有什么不同?
  1. 请求参数的位置:get将请求参数放在URL的查询字符串中,而post将请求参数放在请求体中。
  2. 请求参数的长度:get将参数放在URL中,请求参数的长度有限制,这取决于HTTP协议以及Web服务器,一般来说不超过2048个字符,而post没有这样的限制,请求体可以包含大量的数据。
  3. 安全性:get请求可以被缓存,安全性比较低,post请求不可以被缓存,安全性比较高。
  4. 浏览器地址栏显示:当使用 GET 提交表单时,浏览器地址栏会显示完整的 URL,包括查询字符串。而使用 POST 提交表单时,浏览器地址栏只显示 URL 的路径部分,不显示查询字符串或请求体。
  5. 对资源的消耗:GET 请求获取资源的方式是通过发送 HTTP 请求从服务器端获取,因此对服务器资源消耗较小。而 POST 请求是将数据发送到服务器端进行处理,因此对服务器的 CPU 和内存等资源消耗较大。
  6. 对数据的处理:GET 请求通常用于从服务器获取数据(如读取资源),而 POST 请求通常用于向服务器发送数据(如提交表单)。
  • request是请求对象,记录了客户请求的所有数据
    • 接收参数request.getParameter()
             String params_username=request.getParameter("username");  //html的name值
             String params_password=request.getParameter("password");
             String params_province=request.getParameter( "province");
  • response是响应对象,将服务器中的数据回应给客户的对象
    • 写回响应内容;

      response.getWriter().write(response_text);
  • Java是面向对象的,所有的事务都是对象
  • Servlet只有1个实例对象;
  • Servlet是线程不安全的;
  • 请求转发
  1. 浏览器发送了一次请求;
  2. easyE和easyF的request是一个对象;
    @WebServlet("/easye")
    public class EasyEServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    req.getRequestDispatcher("easyf").forward(req, resp);
    }
  3. 请求转发可以访问项目中受保护的资源WEB-INF文件夹下的文件;
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      req.getRequestDispatcher("WEB-INF/form.html").forward(req, resp);
            
        }
  • 重定向
  1. 浏览器发送了两次请求;
  2. 不能访问项目中受保护的资源,要访问本项目内容要写全路径;
  3. 重定向可以访问到项目外的地址;
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("https://www.baidu.com");
    }
  • Servlet生命周期
  1. 默认在首次被访问时实例化对象,立即执行init方法;
    1. 可以使用loadOnStartup设置实例化对象顺序;
    2. loadOnStartup是负数(默认),就在第一次访问时实例化对象;
    3. loadOnStartup是正数,就在服务器启动时实例化对象,值越小越优先启动;
  2. 每次执行会执行service方法,然后根据请求方式分别执行doget和dopost方法;
  3. 服务正常结束会执行destory方法,被动的调用,作用是关闭Servlet对象中的资源;
  • servlet的层次结构
  1. API接口:包含基础的ServletAPI,如javax.servlet.*包下的所有类和接口;
  2. 容器层:这层处理servlet的生命周期,以及web服务器之间的交互。它包括了servlet容器(如Tomcat),负责加载、初始化、执行和销毁servlet;
  3. web层:这层处理与web应用相关的功能,如处理http请求,生成动态web页面,生成动态web页面等,它包括web页面;
  • servlet的层级结构,常用的类有:
  1. HttpServlet:这个类是servlet API中的核心类,所有的servlet都应继承这个类;
  2. servletRequset:这个类代表了客户端发送的HTTP请求,包括请求头、请求参数等;(调用service方法时创建)
  3. servletResponse:这个类代表了服务器的http响应,可以通过这个类向客户发送数据;(调用service方法时创建)
  4. HttpSession:这个类用于在多个请求之间保存和获取数据;
  5. servletContext:这个类提供了关于Web应用的配置信息,以及获取web应用资源的方法;(初始化时创建)
  • getParameter和getAttribute的区别
  1. 获取数据来源不同:getParameter()获取的是客户端设置的数据,比如从浏览器传过来的数据、请求值。getAttribute()获取的是服务器上的数据、转发值,域值对象。
  2. 返回值类型不同:getParameter()永远返回字符串,而getAttribute()返回值是任意类型。
  3. 如果需要在服务器端进行跳转,并需要想下个页面发送新的参数时,可以使用setAttribute添加参数值到request对象中,然后用getAttribute来获取。
  • ajax
  1. ajax异步的Javascript和xml   在页面不刷新的时候发送请求;
                $('[name="username"]').blur(function(){
                    //获取该输入框中的内容
                    var text=$(this).val();
                    //将改内容发送到服务器
                    $.ajax({
                        url:"easyname",//地址
                        data:{username:text},//传递给服务器的参数
                        //处理服务器回应的结果
                        success:function(result){
                            if(result==0){
                                alert("用户名可以使用")
                            }else{
                                alert("用户名被占用")
                            }
                        },//成功访问到服务器,后要执行的代码
                        error:function(){
                            alert("服务器开小差了")
                        }//请求失败  404找不到 500服务器报错  503不允许,权限不够 
                    });
  2. 在java文件获取用户提交的参数;
            String param_name=req.getParameter("username");
            if("zhangsan".equals(param_name)) {
                resp.getWriter().write("1");
            }else {
                resp.getWriter().write("0");
            }

     

  • jsp (基于java的服务端技术)
  1. <%@ %>:定义页面依赖属性,比如指定页面编码方式、引入其他文件等。
  2. <!-- -->:HTML注释;
  3. <%--  --%>:JSP的注释;
  4. <% %>:java代码脚本,局部变量声明;
  5. //:在java代码中的注释;
  6. <%! %>:类中声明脚本,只能声明,不能调用;
  7. <%= %>:打印脚本

 

posted @ 2023-11-15 20:19  卡皮巴拉  阅读(56)  评论(0)    收藏  举报