开发Servlet组件你不能不知道的东西

1.Tomcat概念:

    tomcat是ApacheSoft组织下的一款用于扩展web服务器的一个Servlet容器,此款软件需要在jre环境下运行启动。

2.myeclipse配置Tomcat环境

点击window选择Preferences,这时候出现:


进行第二步配置:


最后,如果你的Tomcat版本比较高怎么办,只要这样就可以了


3.测试:Tomcat是否配置成功

在MyEclipse中启动Tomcat服务器,然后再任意的浏览器中输入:http://localhost:port(Tomcat的端口号,默认为8080),出现如下图,表示配置成功


4.Servlet是什么?

    是sun公司开发的用于扩展web服务器的组件规范。

    组件:是一个能实现部分功能,需要部署一定的环境下才能运行的模块。

    容器:可以运行一个组件的程序。

5.如何开发一个组件?

    1.编写符合规范的Servlet组件;

    2.引用第三方jar包,编写成class文件;

    3.需要打包成一下结构,不过在myeclipse中不用我们手动创建结构,直接生成了,文件结构如图所示:

    

    注意:还有一个Classes:存放的class字节码文件,默认是隐藏的;在Tomcat服务器的webapps也可找到同样结构的文件。

    4.将打包的结构部署到Tomcat中的webapps文件夹下

    5.启动Tomcat,在浏览器中输入:http://ip:port:appName/要访问的url

    注:APPName通常是你的工程的名字,当然不绝对。

6.创建组件的一般要求

    1.创建class类命名规则XXXServlet需要继承HttpServlet,需要重写service方法

    2.配置web.xml文件,只需要:

    

7.运行Tomcat,常见到错误代码:Servlet容器向浏览器返回的状态码(重点)

    1.404:访问的路径不存在

    原因:appname写错、url写错、Servlet-name写错

    2.405:方法不被允许使用

    原因:service名称不一致、方法内的参数类型不符合规范

    3.500:不是一个Servlet组件、没有继承HttpServlet、Servlet-class中的内容写错

8.Http协议:

    是w3c组织(万维网联盟)是一种通信协议,定义了浏览器与web应用之间的数据格式

    包含:请求(request)和响应(response)

    首先我们开启监控端口,点击window->show view->other,搜索TCP/IP,出现如图:

    

出现监控窗口,鼠标右键点击上部分窗口的空白,选择Properties,出现


启动服务,浏览器这时候的端口号就要是监控port了,实例是通过Servlet组件在浏览器上显示当前系统的时间,结果如图所示:


请求和响应详细解释:

    1.请求:浏览器向服务器发送数据

        请求数据包含:

            请求行:请求方式+请求路径+协议种类+版本

            消息头:都是以键值对的方式存储,例如content-type消息头存储字符编码集

            实体内容:只有post请求才有数据

    2.响应:服务器向浏览器发送数据

        响应数据包含:

            状态行:协议种类+版本号+状态码+状态信息

            消息头:也是以键值对的形式存储的

            响应数据:经过业务逻辑运算,要发送给浏览器数据

9.Servlet处理Http协议:

    用户访问网页请求和响应过程图(从这图就能看出来图片是盗的^-^):

    

    Servlet容器会将接收到的信息进行封装,封装到HttpServletRequest这个类型的对象上,可以从request这个对象得到我们想要的数据

    比如:版本号,用户提交的数据、字符集

    Servlet容器在响应浏览器时,也会将一些数据,封装到HttpServletResponse类型的对象上,发送到浏览器上,会自动解析

    比如:绑定的消息头、字符集、状态码

注意:每一次请求和响应,Servlet容器都会创建一个request和response对象    

10.参数的处理:(怎么从浏览器上获取数据到后台)

    请求对象的方法:getParameter(要传参数)

    获取浏览器页面的value值,参数要传name属性的值,返回的是字符串类型,页面上没有name值,返回null

11.常用的请求方式:

    默认的是get请求方式,特点:提交的数据都会显示在地址栏,可以提交数据的最大长度为4k,相对来说不是很安全。

    post请求方式:数据不会显示在地址栏上,数据大小没有限制,相对来说比较安全。

12.处理中文乱码问题

    1.服务器接受浏览器端的数据的时候,可能会出现中文论码问题

        get请求解决办法:只能是重新进行编码,具体操作为:

String username = request.getParameter("username");
byte[] b = username.getBytes("ISO-8859-1");//首先按照浏览器编码,把字符串变成字节,我的浏览器编码集为ISO-8895-1
username = new String(b,"utf-8");//控制台对应的编码

        注:此种方法同样适用post请求

        post请求:

request.setCharacterEncoding("utf-8");

     2.浏览器接受服务端的数据的时候,也可能出现中文乱码问题

         适用response对象设置消息头:

response.setContentType("text/htm;charset=utf-8");
    注意:如果把text写错的话,执行响应的时候,浏览器会出现保存文件的效果,所以不要写错

猜你喜欢

转载自blog.csdn.net/lg_49/article/details/79793712