24@Servlet_day02

 

1、http协议的相关知识(了解)
  1)http协议是什么?
    超文本传输协议,定义了浏览器(或者是其它客户端程序)与web服务器之间通讯的过程与数据的格式。
  2)通讯的过程
    a, 浏览器建立与web服务器之间的连接
    b,浏览器将请求数据打包,发送。
    c,服务器处理请求数据,将处理结果打包,发送。
    d,服务器关闭连接。
    如果浏览器再次要向服务器发请求,需要重新建立连接。
  3)数据格式
    a,请求数据包
      请求行
        请求方式(get/post) 请求资源路径 协议的类型及版本
      若干消息头
        什么是消息头?
          消息头由w3c定义(也可以自己定义),浏览器与服务器都会遵守的一些通讯的约定,比如,服务器可以通过设置content-type消息头,告诉浏览器,服务器返回的数据类型及编码。反过来,浏览器也可以通过设置user-agent消息头,告诉服务器浏览器的类型及版本。
          当浏览器与服务器之间进行通讯时,浏览器和服务器会自动生成一些消息头,我们也可以通过编程的方式生成一些消息头。
      实体内容
        只有当请求方式是post方式时,请求参数及参数值才会放在这儿,如果请求方式是get方式,则请求参数及参数值会放在请求资源路径后面。
    b,响应数据包
      状态行
        协议的类型与版本 状态码 状态码的描述
          常见的状态码:
            404: 请求资源不存在
            500: 系统出错
            200: 正常
      若干消息头
        服务器也可以发送一些消息头给浏览器。
      实体内容
        服务器返回给浏览器的处理结果。


2、get/post请求方式

  1)哪一些是get请求方式
    a, 直接在浏览器地址栏输入某个地址。
    b,点击链接地址
    c, 表单默认的提交方式
  2)get请求方式的特点
    a,请求参数会添加到请求资源路径后面。请求资源路径后面添加的参数数据量大小是有限制的,
    b,会将请求参数直接显示在浏览器地址栏,不安全。
    c, get方式只适合于向服务器请求资源或者是向服务器提交少量的数据。
  3)哪一些是post请求方式?
    a,设置表单的method="post"
  4)post方式的特点
    a, post方式会将请求参数及值添加到实体内容里面,可以放置大量的数据
    b,因为不会将参数直接显示在浏览器地址栏,所以相对安全。


3、表单的处理

  1) 如何获得表单中的参数值
    String request.getParameter(String paraName);
    注意:
      a, 如果paraName对应的值不存在,返回null。
      b,如果表单中的参数值没有输入,会返回""。
      //如果有多个paraName都相同时使用,比如
      //  ?city=bj&city=wh&city=cs
      String[] request.getParameterValues(String paraName);
        
  2)如果表单参数值为中文,如何处理
    乱码问题产生的原因:
      浏览器会对表单中的中文参数进行编码,具体采用何种编码要看打开该表单所在的页面时的编码是什么。比如,使用utf-8打开该页面,则会使用utf-8来对中文参数进行编码。服务器端默认情况下,会使用iso8859-1来解码。
    解决方式:
      step1 使用<meta http-equiv="content-type" content="text/html;charset=支持中文的编码格式">
        这样做的目的,是保证表单中的中文参数会按照确定的编码格式来编码的。另外,表单要使用post方式提交。
      step2 使用 request.setCharacterEncoding(String code);
        让服务器使用code指定的编码格式去解码。


4、使用mysql

  1)mysql的简单使用
    a,登录(以root用户的身份来登录)
      mysql -uroot;
    b,查看数据库
      show databases;
    c,创建一个数据库(并且设置默认的编码格式是utf8)
      create database  jd1203db character set utf8;
    d,建表

View Code
1 create table  t_emp(
2     id int primary key auto_increment,
3     name varchar(50),
4     age int,
5     salary double
6 );

 

      auto_increment: 自增长列,指的是在插入数据时,由数据库自动为主健赋值。
           

View Code
 1 create table t_user(
 2     id int primary key auto_increment,
 3     username varchar(50) unique,
 4     pwd varchar(20),
 5     gender char(1),
 6     birthday date,
 7     registTime datetime,
 8     info text,
 9     photo blob
10 );

 

      unique:唯一性约束
      text: 相当于clob类型,用于保存比较大的文本。
      blob: 保存比较大的二进制数据,比如图像。
    e,使用某个数据库:
      use jd1203db;
    f, 查看当前数据库有哪些表?
      show tables;
    g,查看某张表的结构
      desc tableName;
    h, 对表中的数据的操作
      insert into t_emp(name,age,salary) values('zs',22,10000);
      select * from t_emp;
  2)在servlet类当中如何使用jdbc访问数据库
    step1 将数据库的jdbc驱动程序 拷贝到 WEB-INF\lib下。
    step2 使用jdbc代码访问数据库,需要注意异常的处理。
      如果是系统异常:
        a, 将异常抛出
          throw new ServletException(e);    
        b, 配置一个错误处理页面
          首先写一个html文件(err.html),该文件只需要提示用户稍后重试。
          在web.xml文件中,使用

View Code
1 <error-page>
2     <error-code>500</error-code>
3     <location>/err.html</location>
4 </error-page>

 

 


练习:
  写一个ListEmpServlet,以表格的方式显示所有员工的信息。    
  http://localhost:8080/web02/list

 

posted @ 2012-05-22 23:20  笑仁术Rex  阅读(161)  评论(0编辑  收藏  举报