Servlet重定向和转发、如何将中文插入数据库

重定向

    (1)什么是重定向?
        web服务器发送一个302状态码及一个Location消息头(该消息头的值是一个地址,一般称之为重定向地址)给浏览器,浏览器收到之后,会立即向重定向地址发请求。
        简单理解为:服务器通知浏览器向一个新地址发请求。
    (2)如何重定向?
        response.sendRedirct(String url);//url是重定向地址。

        如下是重定向发生时,服务器给浏览器的响应消息头
HTTP/1.1 302 Moved Temporarily
    
Server: Apache-Coyote/1.1
Location: http://localhost:8080/web03/list
Content-Type: text/html;charset=utf-8
Content-Length: 0
Date: Fri, 06 Dec 2013 03:02:46 GMT</span>

    (3)需要注意的问题
        1)重定向之前,不能够调用out.close()。(因为这句话会让服务器生成一个响应数据包给浏览器,而重定向也会生成,同时执行会造成冲突)
        2)重定向之前,web服务器会先清空response对象上缓存的数据。
    (4)特点

        1)重定向地址是任意的。

        2)重定向之后,浏览器地址栏的地址会变成重定向地址。

转发和重定向区别

转发:
    a)地址不变
    b)一次请求
    c)当请求一个组件A,A执行完之后,没结束,需要调用另一个组件B才能结束请求。
重定向:
    a)地址变
    b)2次请求
    c)当请求一个组件A,A执行完之后,请求结束,通知系统,自动做下一个请求B。

如下图所示:

Servlet重定向和转发、如何将中文插入数据库_第1张图片

如何将中文插入数据库

    step1,应用程序能够正确处理编码问题。
    a.静态页面(HTML)
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    b.servlet要添加
    request.setCharacterEncoding("utf-8");
    要保证表单是post方式来提交。
    step2,要保证数据库设置了正确的字符集。
    比如
        create database jsd1309db default character set utf8;
    step3, jdbc驱动能够正确地进行编码和解码
        编码: 将中文插入数据库时。
        解码: 查询数据库。
    注意,某些mysql的jdbc驱动不能够正确进行编码和解码(默认情况下,会使用iso-8859-1去编码或者解码),对于mysql的jdbc驱动,可以设置如下:
        jdbc:mysql://localhost:3306/jsd1309db?useUnicode=true&characterEncoding=utf8。
    其作用是告诉jdbc驱动使用utf8进行编码和解码。(Java程序在内存中以Unicode编码形式存在,这里将Unicode变成utf-8编码)   


转载请注明出处:

http://blog.csdn.net/daijin888888/article/details/51082876

你可能感兴趣的:(重定向)