zoukankan      html  css  js  c++  java
  • servlet学习总结

    一、web工程结构

    1、HTTP协议(hyper text transfer protocol)(超文本传输协议)

           机制:请求/响应 机制(request/response)(HttpServletRequest/HttpServletResponse

     

         2、手动创建web工程步骤:

             1)在C盘目录下新建一个文件夹,取名MyWebProject,在该文件夹下创建两个文

            件夹如下:

             文件夹WEB-INF,该文件夹里面有:lib文件夹,classes文件夹和web.xml

             文件夹pages,该文件夹下主要放htmljspcss,js,img等文件

          2)打开运行,输入CMD,弹出命令窗口,输入cd进入C盘根目录,再输入

             MyWebProject进入Web工程根目录,再输入jar  -cvf  MyWebProject.war .

             回车后,项目已经打包成war了,在该工程根目录文件夹下面有一个 

             MyWebProject.war

          3)再把这个包放到tomcatwebapp目录下,启动tomcat, 

             浏览器里面测试成功。

    二、Servlet简介

        

    调用Servlet的几种方式:

    --URLhttp://huazai-pc:8080/ServletTest/Hello

    --提交表单

    --超链接

    --javascript脚本

        

    三、Servlet基础

    -提交表单的方法

      Geturl地址栏显示提交信息,url地址栏长度有限制,当数据量大的时候容易造成

          数据丢失导致数据不完整

      Post:比较安全,url地址栏不会显示提交信息,提交信息量不受限制,一般情况使

            用doPost

    一般情况默认调用doGet,当Servlet里面有service方法且该方法里面没写代码时,默认调用service方法,没有调用doGetdoPost方法

    -Servlet生命周期(四个步骤)

    1、加载实例化Servlet:创建一个Servlet实例

    2、调用init方法(仅被调用一次)(多用户共享一个实例)

    3、调用service方法(doGet或者doPost)(被调用多次,每次请求调用)

    4、调用destory方法:调用一次(销毁Servlet

    -使用Servlet输出HTML页面

    -获得Servlet初始化参数

        Web.xml配置全局参数:

           <context-param>

    <param-name>contextname</param-name>

    <param-value>contextvalue</param-value>

    </context-param>

         Servlet获得全局参数:

    this.getServletContext().getInitParameter("contextname");

        Web.xml配置局部参数:

    <servlet>

    <init-param>

    <param-name>name</param-name>

    <param-value>namevalue</param-value>

    </init-param>

    </servlet>

         Servlet获得局部参数:

    this.getInitParameter("name");

     

    -页面导航

      1、请求重定向:(不共享request里面的数据)

         -response.sendRedirect(“url”);

      2、请求转发(共享request里面的数据)

         -request.getRequestDispatcher(“url”).forward(request,response);

      3、请求包含

         request.getRequestDispatcher(“url”).include(request,response);

    四、ServletForm表单处理

    1Form表单简介

    -表单是web程序和用户交互的主要途径之一,例如:搜索引擎,注册登录等

    -常用表单元素

    -input:  text  password  radio  checkbox  file  button   reset  submit

     -select  Option

    -textarea

    --使用Servlet处理表单

      1、读取单个请求参数:

    String username=request.getParameter("username");

      2、读取多个表单

    String[] hobby=request.getParameterValues("hobbies");

      3、读取所有参数名称

    Enumeration names=request.getParameterNames();

    五、Servlet请求头信息

        1Servlet请求头信息

    读取HTTP请求头信息

      1)使用HttpServletRequest中的方法:

         -一般方法:

           -getHeader   (header名称不区分大小写)

           -getHeaders

           -getHeaderNames

         -专门方法:

          -getCookies

          -getAuthType

          -getRemoteUser

          -getContentLength

          -getContentType

          -getDateHeader

          -getIntHeader

           -相关信息

              -getMethod

              -getRequestURI

              -getQueryString

              -getProtocool

          2)判断浏览器类型

             if(broswer!=null && broswer.indexOf("MSIE")!=-1){

    System.out.println("使用IE浏览器");

    }else if(broswer!=null && broswer.indexOf("Mozilla")!=-1){

    System.out.println("使用Mozilla浏览器");

    }else if(broswer!=null && broswer.indexOf("Chrome")!=-1){

    System.out.println("使用谷歌浏览器");

    }else{

    System.out.println("使用其他浏览器");

    }

    2Servlet响应头信息

     

     

    1、构建Excel表格

           response.setContentType("application/vnd.ms-excel");

    PrintWriter out= response.getWriter();

    out.println(" Q1 Q2 Q3 Q4 Total");

    out.println("Apples 78 87 92 29 =SUM(B2:E2)");

    out.println("Oranges 77 86 93 30 =SUM(B3:E3)");

    2、读取图片并显示

    response.setContentType("image/jpeg");

    InputStream in=this.getClass().getClassLoader().getResourceAsStream("bld.jpg");//文件加载器

    byte[] b=new byte[in.available()];

    in.read(b);

    OutputStream out=response.getOutputStream();

    out.write(b);

    out.close();

    in.close();

    3、定时刷新

    response.setHeader("refresh", "1");

    out.println((new Date()).toLocaleString() );

    六、Cookie

    1Cookie简介

    -Cookie是保存在客户端的一个“键值对”,用来标示用户的一些信息

    2Cookie的应用

        -在电子商务中标示用户

        -对站点进行定制

        -定向广告

    3、创建Cookie

           -调用Cookie的构造函数,给出cookie的名称和cookie的值,二者都是字符串;

              Cookie c=new Cookie(“UserId”,”a1234”);

           -设置最大时效

             如果要告诉浏览器将Cookie存储到磁盘上,而非仅仅保存在内存中,使用 

              SetmaxAge(参数为秒数)

              c.SetmaxAge(60*60*24*7);//one week

             -Cookie放入到HTTP响应

               response.addCookie(c);

         4、创建Cookie代码:

             import javax.servlet.http.Cookie;

            Cookie c=new Cookie("username", "xiaoyang");  

            c.setMaxAge(60*60*24*7);

    response.addCookie(c);

         5、访问Cookie代码:

           Cookie[] cookie=request.getCookies();

      if(cookie!=null && cookie.length>0){

            for(int i=0;i<cookie.length;i++){

            Cookie c=cookie[i];

            out.println(c.getName()+":"+c.getValue());

            }

      }

    七、Session

    1Session API

     

    //获得Session实例,该接口由服务器容器实现

    HttpSession session=request.getSession();

    //session共享数据

    session.setAttribute("un", username);

    //获取session里面的值

    String un=(String) session.getAttribute("un");

     

    八、共享变量

       1、变量的作用域

         -HttpServletRequest(请求级别,当前请求)

         -HttpSession(会话级别,当前浏览器和服务器)

         -ServletContext(应用程序级别,全局变量,整个web工程)

    变量${var}在值栈中查找顺序是:HttpServletRequest->HttpSession->ServletContext

    ${requestScope.var}${sessionScope.var}${applicationScope.var}

    九、过滤器Filter

        

    1.Filterweb.xml中配置后,当我们访问目标资源时,系统会根据所配置范围自动执行,配置代码如下:

    <!-- 声明过滤器 -->

    <filter>

    <filter-name>myfilter</filter-name>

    <filter-class>com.amaker.filter.MyFilter</filter-class>

    </filter>

    <filter-mapping>

    <filter-name>myfilter</filter-name>

    <url-pattern>/*</url-pattern><!-- 拦截整个工程下的所有文件 -->

    </filter-mapping>

     

    十、监听器Listener

        

    在web.xm里面配置方式如下:

      <listener>

    <listener-class>com.amaker.listener.ListenerTest</listener-class>

    </listener>  

  • 相关阅读:
    npm 报错 : `Error: ENOENT: no such file or directory, mkdir D:\`
    weex中根据返回图片的大小,进行等比缩放展示
    weex中怎么动态循环产生输入框?字段名根据后端返回的数据而定
    hdu 2473 Junk-Mail Filter(并查集)
    cf2A Winner(implementation)
    hdu 5185 Equation(分析+DP)
    hdu 5183 Negative and Positive (NP)(STL-集合【HASH】)
    hdu 2059 龟兔赛跑(DP)
    hdu 1978 How many ways(DP)
    hdu 2577 How to Type(DP)
  • 原文地址:https://www.cnblogs.com/XiaoyangBoke/p/xiaoyang_boke.html
Copyright © 2011-2022 走看看