B/S结构的程序中,用于描述服务器端和浏览器端数据传输结构和方式的标准规范
- 请求(Request)---请求头(Request Head)和请求体(Request Body)
- 响应(Response)---响应头(Response Head)和响应体(Response Body)
Tomcat目录结构说明
(1)bin---启动停止服务器的命令 重点
(2)conf---配置文件 重点
(3)lib---Tomcat自己的类库Jar文件
(4)logs---记录日志文件---catalina.yyyy-mm-dd.txt中记录了启动/停止服务器时,控制台的输出内容
(5)temp---临时文件
(6)webapps---存放发布的web项目---每一个web应用程序都必须发布到此目录中才能运行 重点
每个Web项目对应一个文件夹,其中必须包含一个WEB-INF的子文件夹,而且WEB-INF下必须有一个web.xml的配置文件
(7)work---Tomcat自己的工作目录,用于将jsp代码转换为java代码
------------------------
Tomcat的配置1---修改\conf\server.xml---修改Tomcat的端口号
------------------------
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
注意:只要是修改了xml配置文件,就要重启Tomcat服务器才能生效;
GET请求和POST请求的区别
(1)GET请求提交的参数写在请求头中,POST请求提交的参数写在请求体中 【本质区别】
(2)GET请求提交的参数在浏览器栏上可见,不安全,不适合传输密码等关键数据
(3)GET提交的数据有最大容量限制,一般不超过4K,POST没有限制,适合传输大文件
提交请求参数的三种方式
(1)通过表单提交
<form action="user_login.jsp" method="get或post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="登录" />
</form>
(2)通过URL重写提交---属于GET方式,格式为xxx.jsp?参数名1=值1&参数名2=值2... 以?开头,多个参数以&分割
<a href="user_login.jsp?username=etc&passwword=123">登录</a>
(3)通过浏览器栏输入地址直接提交---属于GET方式,格式为xxx.jsp?参数名1=值1&参数名2=值2... 以?开头,多个参数以&分割
request接收请求参数的两种方式
(1)使用request对象的getParameter("参数名")方法接收单个字符串参数
(1.1)参数名应和表单元素的name属性完全一致,区分大小写,返回类型为String
(1.2)如果没有输入参数值,则返回空白的字符串""
(1.3)如果表单元素的name属性值和参数名不一致或未提交参数直接接收,则返回null
(2)使用request对象的getParameterValues("参数名")方法接收多个字符串参数,返回字符串数组
(2.1)如果表单元素的name属性值和参数名不一致或未提交参数直接接收,则返回null
常见的字符编码表
为了方便应用计算机,让它可以识别各个国家的文字,就将各个国家的文字用数字来表示,并一一对应,形成一张表,这就是字符编码表,简称码表或字符集
(1)ASCII---美国使用的美国标准信息交换码,用一个字节的低7位表示一个字符,最多能表示128个字符
(2)ISO8859-1---欧洲国家使用的拉丁码表,又称Latin-1编码,用一个字节的8位表示一个字符,最多能表示256个字符 重点
(3)GB2312---中国大陆使用的简体中文编码表,用2个字节表示一个字符
(4)BIG5---台湾使用的繁体中文编码表,用2个字节表示一个字符
(5)GBK---GB2312的升级版,融合了更多的中文文字符号,用2个字节表示一个字符 重点
(6)Unicode(Uniform Transformation Format / UCS(Universal Character Set)---国际标准码/国际字符集,融合了多国文字的统一标准
(6.1)UTF-8---为了节省空间,提高传输效率,用1到3个字节表示一个字符,最适合用于网络传输 重点
(6.2)UTF-16---用2个字节来表示一个字符,最适合用于本地字符串存储
字符编码和字符解码
(1)字符编码---将字符转换为对应的二进制串 String --> byte[]
(2)字符解码---将二进制串转换为对应的字符 byte[] -->String
提交参数时产生中文乱码的原因
(1)浏览器提交中文数据时,使用UTF-8编码提交给Tomcat服务器
(2)Tomcat服务器默认使用iso8859-1将数据进行解码
解决POST请求的中文乱码问题
(1)接收参数之前,添加设置字符编码的语句,request.setCharacterEncoding("utf-8");
(2)或者,使用过滤器进行全部页面的POST中文乱码处理,此方法只对POST请求有效
解决GET请求的中文乱码问题
(1)先将乱码字符串按iso8859-1的格式编码回原始的字节数组
(2)再将字节数组按utf-8的格式解码成字符串,username = new String(username.getBytes("iso8859-1"), "utf-8");
------------------------
统一操作---修改server.xml,在<Connector>标签中增加URIEncoding="utf-8",统一进行全部页面的GET中文乱码处理,此方法只对GET请求有效
------------------------
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
JSP的9个内置对象
out输出对象---是javax.servlet.jsp.JspWriter类的实例 --> java.io.Writer类
作用---向页面输出响应信息
request请求对象---实现了javax.servlet.http.HttpServletRequest接口 --> ServletRequest接口
作用---客户端发出请求时,所携带的请求信息的封装对象,包括表单请求参数,请求头等信息
response响应对象---实现了javax.servlet.http.HttpServletResponse接口 --> ServletResponse接口
作用---服务器端响应请求时,所携带的响应信息的封装对象,包括各种响应标识状态,响应头等信息
session对象---实现了javax.servlet.http.HttpSession接口(顶层)
作用---存储和某个客户端相关的会话信息的封装对象,靠SessionID区分不同的用户
application应用程序对象---实现了javax.servlet.ServletContext接口(顶层)
作用---同一个web项目中的所有用户共享同一个application全局对象
config配置对象---实现了javax.servlet.ServletConfig接口(顶层)
作用---存储Servlet类的配置信息,在JSP页面中不常用
page页面对象---是java.lang.Object类的实例(顶层)
作用---表示当前页面生成的Servlet类的实例,相当于this,不常用
pageContext页面上下文对象---是javax.servlet.jsp.PageContext类的实例 --> javax.servlet.jsp.JspContext类
作用---封装了当前页面范围的信息,提供了很多的getXXX()方法,可以方便地访问其他作用域对象
exception异常对象---是java.lang.Throwable类的实例(顶层)
作用---只能用于异常处理页面中,只有设置了isErrorPage=true的页面才能使用该对象