什么是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)重定向之后,浏览器地址栏的地址会变成重定向地址。