02-jsp基本语法&表单提交方式&request对象
本堂课大纲:
①jsp基本语法(jsp指令、注释、脚本、声明、表达式等等)
②网页的常见错误
③jsp内置对象--out对象、表单提交方式、request对象
=====================================================================================================
1.jsp基本语法
1.1 什么是jsp?
jsp(java server pages)java服务器端页面,它是一种动态网页开发技术,使用了jsp标签在html网页中插入java代码;标签通常以<%开头以%>结束。
1.2 jsp页面元素的构成
注释(html注释,jsp注释,js注释 java)、声明、小脚本、表达式、指令、静态内容
1.3 jsp指令
page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令。-------本堂课讲解
include指令:将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句--------后面会讲
taglib指令:使用标签库定义新的自定义标签,在jsp页面中启用定制行为 -----------后面会讲
1.4 page指令详解
①语法:<%@ page 属性1 = "属性值" 属性2 = "属性1,属性2"...属性n = "属性值n"%>
②page指令中常用的三个属性
language:指定jsp页面使用的脚本语言 java
import:通过该属性来引用脚本语言中使用到的类文件 无
contentType:用来指定jsp页面所采用的编码方式 text/html 默认字符集:ISO-885-1----纯英文
【案例】新建一个项目,打开index.jsp后第一行出现page指令的代码。进行演示
**推荐使用contentType = "text/html;charset = UTF-8"
1.5 关于jsp注释
①html注释 <!-- -->//客户端可见
②jsp注释 <%--html注释--%>//客户端不可见
③jsp脚本注释
//单行注释
/**/多行注释
【案例】新建jsp页面进行演示
1.6 jsp脚本
在jsp页面中执行的java代码,语法:<%Java代码%>
【案例】
<%
//out属于jsp九大内置对象之一
//向浏览器输出信息
out.print("大家好,欢迎大家学习javaweb");
%>
1.7 sp声明
在jsp页面中定义变量或者方法,语法:<%!java代码%>
【案例】:
<%!
//声明一个变量
String str= "张三";
//声明一个返回整数的函数,实现两个整数的求和
int add(int x,int y){
return x+y;
}
%>
1.8 jsp表达式
在jsp页面中执行的表达式,语法: <%=表达式%>//注意:表达式不以分号结尾
【案例】:
<%!
//声明一个变量
String str= "张三";
//声明一个返回整数的函数,实现两个整数的求和
int add(int x,int y){
return x+y;
}
%>
//输出
<%=str%>
x+y=<%=add(10,8)%>
【jsp页面生命周期】
编译阶段
初始化阶段
执行阶段
销毁阶段
2.网页的常见响应码
200:请求成功,浏览器会吧响应体内容(通常是html)显示在浏览器当中
404:请求的资源没有找到,说明客户端错误的请求了不存在的资源(网址)
500:请求的资源找到了,但服务器内部出现了错误
3.jsp内置对象
3.1 jsp内置对象简介
jsp内置对象是web容器创建的一组对象,不使用new关键字就可以使用的内置对象。
【案例】定义一个数组,使用out内置对象遍历输出
<%
int[] value = {60,70.80};
for(int i:value){
out.print(i)
}
%>
3.2 jsp中9大内置对象
--常用
out
request
response
session
application
--不常用
page
pageContext
exception
config
3.3 关于web程序的请求与响应模式
在将jsp内置对象之前,先给大家介绍一下:
web程序的请求响应模式。用户发送请求:request,服务器给用户响应:response
【画图分析】
用户----------http请求--------》web服务器
用户《----------http响应--------web服务器
例子:登录
点击登录想服务器发送请求,在请求对象中封装了用户名和密码。
服务器端接受用户的请求,判断用户名和密码后,给客户端发送响应页面
总结:web应用程序都是基于请求和响应的模式的。
3.4 out对象
out对象是jspWriter类的实例,是想客户端输出内容常用的对象
常用的方法如下:
1.void println():想客户端打印字符串
2.void clear():清除缓冲区的内容,如果在flush之后调用会抛出异常
3.void clearBuffer():清除缓冲区的内容,如果在flush之后调用不会抛出异常
4.void flush():将缓冲区内容输出到客户端
5.int getBufferSize() 返回缓冲区以字节数的大小 如不设缓冲区则为0
6.int getRemaining() 返回缓冲区还剩余多少可用
7. boolean isAutoFlush() 返回缓冲满时,是否自动清空还是抛出异常
8.void close() 关闭输出流
3.5 表单的提交方式
get和post区别:<form name = 'myf' action = '提交地址' method = '提交方式'></form>
表单有两种提交方式:get与post
1.get:以明文的方式通过url提交数据,数据在url中可以看到 提交的数据最多不超过2KB
安全性较低但是效率比post方式高 适合提交数据量不大 安全性不高的数据 比如:搜索 查询等功能
2.post:将用户提交的信息封装在html header内 适合提交数据量大,安全性高的用户信息 比如 注册 修改 上传等功能
【例子区别】
--用户登录界面login.jsp dologin.jsp--->登录成功
<h1>用户登录</h1>
<form action = "dologin.html" name = "loginForm" method = "get">
<table>
<tr>
<td>用户名</td>
<td><input type = "text" name = "username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type = "password" name = "password"></td>
</tr>
<tr colspan = "2">
<td><input type = "submit" value = "提交"></td>
</tr>
</table>
</form>
3.6 request对象
表示客户端的一次请求
---------------------------------------------------------------------------------------------------------------
客户端的请求信息被封装在request对象中,通过它才能了解到客户端的需求,然后做出响应。他是HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有效。
①String getParameter(String name)返回name指定参数的参数值
②String[] getParameterValues(String name) 返回包含参数name的所有值的数组
③void setAttribute(String,Object)存储此请求中的属性
④object getAttribute(String name):返回指定属性的属性值
⑤String getContentType()得到请求体的mime类型
⑥String getProtocol() 返回请求用的协议类型及版本号
⑦String getServerName() 返回接受请求的服务器主机名
⑧int getServerPort():返回服务器接收此请求所用的端口号
⑨String getCharacterEncoding():返回字符串编码方式
⑩void setCharacterEncoding():设置请求的字符编码方式
11.int getContentLength():返回请求体的长度(以字节数为单位)
12.String getRemoteAddr():返回发送此请求的客户端IP地址
13.String getRealPath(String path):返回虚拟路径的真实路径
14.String request.getContextPath():返回上下文路径
------------------------------
例子:用户注册和request.jsp
通过URL地址参数传递能传递中文吗?---乱码
--使用request.setCharacterEncoding是无法解决问题的
解决方式:配置Tomcat服务器 server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
加上属性 URIEncoding = "utf-8"
重启服务器即可。
常见HTTP响应码
http状态返回代码1xx(临时响应)
表示临时响应并需要请求者继续执行操作的状态代码。
http状态返回代码代码说明:
100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。
http状态返回代码2xx(成功)
表示成功处理了请求的状态代码。
http状态返回代码代码说明:
200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201(已创建)请求成功并且服务器创建了新的资源。
202(已接受)服务器已接受请求,但尚未处理。
203(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。
204(无内容)服务器成功处理了请求,但没有返回任何内容。
205(重置内容)服务器成功处理了请求,但没有返回任何内容。
206(部分内容)服务器成功处理了部分GET请求。
http状态返回代码3xx(重定向)
表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。
http状态返回代码代码说明:
300(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(useragent)选择一项操作,或提供操作列表供请求者选择。
301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
http状态返回代码4xx(请求错误)
这些状态代码表示请求可能出错,妨碍了服务器的处理。
http状态返回代码代码说明:
400(错误请求)服务器不理解请求的语法。
401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403(禁止)服务器拒绝请求。
404(未找到)服务器找不到请求的网页。
405(方法禁用)禁用请求中指定的方法。
406(不接受)无法使用请求的内容特性响应请求的网页。
407(需要代理授权)此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。
408(请求超时)服务器等候请求时发生超时。
409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。
411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。
412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。
413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414(请求的URI过长)请求的URI(通常为网址)过长,服务器无法处理。
415(不支持的媒体类型)请求的格式不受请求页面的支持。
416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。
417(未满足期望值)服务器未满足"期望"请求标头字段的要求。
http状态返回代码5xx(服务器错误)
这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
http状态返回代码代码说明:
500(服务器内部错误)服务器遇到错误,无法完成请求。
501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。
503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本。