Servlet学习笔记

什么是B/S架构

              客户端使用浏览器,服务端使用web浏览器,客户端跟服务器之间使用HTTP协议进行通讯。

2)优点

①客户端不需要单独安装(因为使用浏览器);C/S架构比较麻烦的是需要单独安装每个客户端,并且一旦客户端版本发生改变,就需要再次安装。

②开发相对简单;C/S架构需要我们分别在,客户端和服务器端编写相应的通信处理模块和自定义协议,而B/S架构使用标准的HTTP协议(即不再需要自定义协议),而且浏览器与Web服务器已经包含了相应的通信模块了。

什么是Tomcat

Tomcat本身是一个Servlet容器,即可以提供Servlet运行环境的一个程序,但是Tomcat还提供了Web服务器所具有的所有功能,所以我们也称Tomcat是一个Web服务器。Tomcat的默认端口是8080。

常见错误及解决方式

1)404:是一个状态码(是一个三位数字,由服务器发送给浏览器,告诉浏览器是否正确处理了请求),404的意思是说:服务器依据请求资源路径,找不到对应的资源。

   解决:①依据http://ip:port/appname/url-pattern检查你的请求地址是否正确。

                      ②仔细检查web.xml,特别要注意servlet-name是否一致。

2)500:服务器处理出错,一般是因为程序运行出错。

   解决:①检查程序的代码,比如:是否继承。

                      ②检查web.xml,类名要填写正确。

3)405:服务器找不到对应的service方法。

   解决:检查service方法的签名(方法名、参数类型、返回类型、异常类型)。

什么是HTTP协议

HTTP(Hypertext transport protocol)是超文本传输协议。是一种应用层协议,由W3C制定,它定义了浏览器(或者其他客户端)与Web服务器之间通讯的过程及数据格式。

通讯的过程

step1:浏览器建立与Web服务器之间的连接(Socket)。

step2:浏览器要将请求数据打包(请求数据包),然后发送给Web服务器。

step3:Web服务器将处理结果打包(响应数据包),然后发送给浏览器。

step4:Web服务器关闭连接。

get请求与post请求

1)哪些情况下,浏览器会使用get方式发请求:

①直接在浏览器地址输入某个地址。              ②点击链接地址。

③表单默认的提交方法:<form method="get(默认)/post">。

2)哪些情况下,浏览器会用post方法发请求:

①设置表单的method属性值为“post”。

3)get请求的特点:

①get请求会将请求参数添加到请求资源路径的后面,因为请求行存放的数据大小有限(也就是地址栏的最长字节数),所以get请求只能提交少量的数据。

②get请求会将请求参数显示在浏览器地址栏,不安全(比如,路由器会记录整个地址)。

4)post请求的特点:

①post请求会将请求参数添加到实体内容里面,所以,可以提交大量的数据。

②post请求不会将请求参数显示在浏览器地址栏,相对安全一些。但是,post请求并不会对请求参数进行加密处理。用HTTPS协议进行加密处理。

如何读取请求参数

1)方法一:String request.getParameter(String paraName);

①如果paraName(即参数名称)与实际的参数名称不一致,会获得null(不报错)。

②在使用表单提交数据时,如果用户没有填写任何的值,会获得空字符串 "" 。

2)方法二:String[] request.getParameterValues(String paraName);

①当有多个参数且名称相同时,使用该方法。比如:?city=bj&city=cs&city=wh

u  注意事项:getParameterValues方法也可用于只有一个参数的情况。

访问数据库(MySql)

1)使用MySql数据库

①登录MySql:mysql -uroot;//登录mysql,使用root用户权限

②查看当前所有的数据库:show databases;

③创建一个新的数据库:create database db_chang default character set utf8;//创建db_chang数据库,默认是用utf8编码集(不能写减号 - )

④使用某个数据库:use db_chang;

⑤查看当前数据库有哪些表:show tables;      drop table tablname;//删表

异常:IllegalStateException

出现如下错误可以不用理会,是因为Tomcat热部署造成的,重新手动部署一下即可

Servlet如何输出中文

需要调用:response.setContentType("text/html;charset=utf-8");其中charset=utf-8表示:

1)用来指定编码格式,只要支持中文即可,比如也可设置为charset=gbk。

2)作用两个:①生成一个content-type消息头,告诉浏览器返回的数据类型和编码格式。

                  ②服务器在输出时,会使用指定的编码格式进行编码。

如果表单有中文参数值,也需要注意编码问题

因为,当表单提交的时候,浏览器会对表单中的数据进行编码(会使用打开表单时的编码格式进行编码),而服务器默认情况下,会使用ISO-8859-1去解码,所以,会产生乱码问题。

1)解决方式一:

step1:先保证表单所在的页面按照指定的编码格式打开。即:

<meta http-equiv="content-type" content="text/html;charset=utf-8" />已是一种规范(模拟content-type消息头,告诉浏览器正在解析的数据类型和编码格式)。

step2:调用request.setCharacterEncoding("utf-8");意思是告诉服务器,使用指定的编码格式进行解码。

u  注意事项:该方法只能用于"post"请求!注意代码放置顺序,在

             request.getParameter()方法前。

2)解决方式二:

step1:同方式一的第一步。

step2:使用new String(str.getBytes("iso-8859-1"),"utf-8");

如何重定向

使用response.sendRedirect(String url);

两个特点

1)重定向的地址是任意的(前提要存在否则报404)。

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

原文地址:https://www.cnblogs.com/wcf6676/p/4967936.html