现在的位置: 首页 > 综合 > 正文

设问了特,哔叽

2013年08月15日 ⁄ 综合 ⁄ 共 2406字 ⁄ 字号 评论关闭

servlet的主要功能:交互式浏览和修改数据

 
访问servlet

    http://ip:port/appName/url-pattern

    http://localhost:8080/project_name/index.jsp

     
http协议:

定义了web browser与web service之间的数据交换方式,一种无状态协议。

    request:客户端的请求

    response:响应客户端请求

    HTTP/1.1   200   OK

    协议/版本  状态码   文本版本

     截获内容:

        HTTP/1.1 200 OK      // HTTP/1.1 是web服务器使用的版本;200 是状态码;OK 是状态码的文本版本

        ETag: W/"472-1198101802343"

        Last-Modified: Wed, 19 Dec 2007 22:03:22 GMT

        Content-Type: text/html  // MIME类型:告诉浏览器所要接收的是哪一类型的数据。以供浏览器显示。

        Content-Length: 472

        Date: Wed, 19 Dec 2007 22:05:44 GMT

        Server: Apache-Coyote/1.1

        //以上是Http响应的首部

        //响应体中包含了Html以及其他要显示的内容

        <html><head><title>User Login</title></head>

        <body><center>……</center></body></html>

         
    状态码:

        200:成功

        302:重定向指令

        404:地址不存在

        500:系统内部出错

        1xx:信息响应类,表示接收到请求并且继续处理

        2xx:处理成功响应类,表示动作被成功接收、理解和接受

        3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

        4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

        5xx:服务端错误,服务器不能正确执行一个正确的请求

   

解决 Servlet 的中文乱码问题

    browser会对ascII之外字符进行编码

   

    (1)响应输出静态页面时 response.setContentType("text/html; charset=utf-8");//返回的文档采用utf-8编码

    (2)获取数据过程中,处理中文输入乱码(3 种方法):

       方法一:设置字符编码来解决 post 方法提交表单中文乱码问题。

             解码:request.setCharacterEncoding("gbk"); 

             编码:response.setContentType("text/html;charset=gbk");

             必须在第一个 request.getParameter("name"); 之前执行上面的语句。

       方法二:重新生成指定编码的字符串

     String name = new String(request.getParamete("name").getBytes("iso-8859-1"));

       方法三:修改服务器的编码设置——解决 get 方法提交表单中文乱码问题

             例如:Tomcat,通过修改%TOMCAT%/conf/server.xml

             加入 URIEncoding="utf-8"

    (3)静态 html 页面的中文化问题

       <head>

            <meta http-equiv="content-type" content="text/html; charset=gbk">

       </head>

       

       数据库乱码:

           create database xxx default character set gbk;

           alter database xxx character set gbk;

           同时改jdbc的url:

           jdbc:mysql://localhost:3306/xxx?useUnicode=true&charaterEncoding=utf8;

       

表单提交:

    get请求:只能传送少量的数据(2kb左右),一般用于请求访问某个资源。

    post请求:发送的数据在http数据包里,相对安全,数据量2M。

     
    通过表单或则响应头修改数据

     
重定向:response.sendRedirect(url);

    @servlet/jsp(或则其他组件)向browser发送url,browser访问新的url

    @重定向之前的输出会清空,不会发送~

     
servlet api 重点:

    @首次访问时执行servlet.init(ServletConfig);以后共享

        init(config){

            thisconfig=config;

            init();

        }

    @service():处理请求,默认调用doGet(),doPost()

    @servlet.dertory():清理资源,卸载服务

     
servlet属性并发性问题,资源共享

如果servlet实现了SingleThreadModel接口,每一个请求会对应一个实例

<load-on-startup>2</load-on-startup>tomcat启动时实例化servlet(后台服务的,数值越小优先级)

   

【上篇】
【下篇】

抱歉!评论已关闭.