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("\tQ1\tQ2\tQ3\tQ4\tTotal");

out.println("Apples\t78\t87\t92\t29\t=SUM(B2:E2)");

out.println("Oranges\t77\t86\t93\t30\t=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>  

posted @ 2014-03-09 09:54  XiaoyangBoke  阅读(391)  评论(0编辑  收藏  举报