http和servlet输出

来源:互联网 发布:php get参数加密 编辑:程序博客网 时间:2024/06/16 15:04
1.http(了解)
 (1)http协议是什么?
  是由w3c制订的一种网络应用层协议,规定了
 浏览器与web服务器之间如何通信以及相应的数据
 包的结构。
  a.如何通信?
   step1,建立连接
   step2,发送请求
   step3,发送响应
   step4,关闭连接
   如果浏览器要发送新的请求,需要重新建立
   新的连接,即“一次请求,一次连接”。
  b.优点
   服务器可以利用有限的连接个数为尽可能多的
   请求服务。
 (2)两种数据包的结构
  1)请求数据包
   a.请求行(请求方式 请求资源路径 协议类型和版本)
   b.消息头
    是一些键值对(使用": "隔开),一般由w3c定义,
    通信的双方可以彼此发送,表示特定的含义,
    比如,浏览器可以发送一个"user-agent"
    消息头,告诉服务器,浏览器的类型和版本。
   c.实体内容
    只有当请求方式为post时,实体内容才会有
    数据(请求参数)。
  2)响应数据包
   a.状态行(协议类型和版本 状态码 状态描述)
    200 正确
    500 系统出错
    404 找不到对应的资源
   b.消息头
    服务器也可以发送一些消息头给浏览器,
    比如,"content-type"可以告诉浏览器,
    服务器返回的数据类型。
   c.实体内容
    程序处理的结果,浏览器会取出相应的数据,
    生成页面。
 (3)两种请求方式(get/post)
  1)哪一些情况,浏览器会发送get请求?
   a.直接在浏览器地址栏输入某个地址
   b.点击链接
   c.表单默认提交方式
  2)get请求的特点
   a.会将请求参数添加到请求资源路径的后面,
   只能提交少量的数据给服务器(请求行只能存放
   约2k左右的数据)。
   b.会将请求参数显示在浏览器地址栏,不安全
   (比如,路由器会记录包含了请求参数的请求地址)。
  3)哪一些情况下,浏览器会发送post请求
   设置表单 method="post"。
  4)post请求的特点
   a.会将请求参数添加到实体内容里面,可以提交
   大量的数据给服务器。
   b.不会将请求参数显示在浏览器地址,相对安全。
   (不管什么请求方式,都不会对请求参数进行加密)

2.servlet输出中文
 (1)乱码问题产生的原因
  out.println方法默认会使用"iso-8859-1"
  来编码。
 (2)解决方式
 response.setContentType(
 "text/html;charset=utf-8");
  作用1:out.println方法会使用指定的字符集来编。
  作用2:设置content-type消息头的值。
   
3.表单包含有中文参数值
 (1)乱码产生的原因
  表单提交时,浏览器会对中文参数值进行
 编码(表单所在的页面使用哪个字符集打开的,就会
 使用这个字符集来编码)。而服务器端默认使用
 "iso-8859-1"来解码。
 (2)解决方式
  step1,要保证表单提交时,使用指定的字符集
  来编码。
  <meta http-equiv="content-type"
   content="text/html;charset=utf-8">
  step2,服务器端使用对应的字符集来解码。
   方式一:
    request.setCharacterEncoding("utf-8");
   注:该方法只对post请求有效。
   方式二:
    name = new String(
     name.getBytes("iso-8859-1"),"utf-8");
   注:
    先获得浏览器发送过来的原始的字符数组,
    然后使用正确的字符集("utf-8")来解码。
 
4.servlet访问数据库
 step1,将jdbc驱动拷贝到WEB-INF\lib下。
 step2,使用jdbc提供的一套api来访问数据库。
 
 mysql的简单使用
 (1)登录mysql
  打开终端,输入
  mysql -uroot;
 (2)查看当前有哪些数据库实例
  show databases;
 (3)创建一个新的数据库 (同时设置缺省的字符集)
  create database jsd1504db
  default character set utf8;
 (4)使用某个数据库
  use jsd1504db;
 (5)查看当前数据库有哪些表
  show tables;
 (6)建表
  create table emp(
   id int primary key auto_increment,
   name varchar(50),
   salary double,
   age int
  );
 注:
   auto_increment: 自增长列,在插入记录时,
   数据库会为该列自动赋一个自动增长的值。
 连接mysql数据库,jdbc参数
 Class.forName("com.mysql.jdbc.Driver");
 DriverManager.getConnection(
 "jdbc:mysql://localhost:3306/数据库名称","账号","密码");
 
   
0 0
原创粉丝点击