JavaWeb快速入门 jsp基本语法&request请求对象

目录

一、Eclipse中Web工程项目目录结构

二、思维导图

三、认识jsp

        1.jsp基本语法

                1.1 什么是jsp?             

                1.2 jsp简介           

                1.3 jsp页面元素的构成                           

                1.4 jsp指令                        

                1.5 page指令详解

                1.6 关于jsp注释                

                1.7 jsp声明                 在jsp页面中定义变量或者方法,语法:<%!java代码%>

                1.8 jsp表达式                         

        2.网页的常见响应码

                    200:请求成功,浏览器会吧响应体内容(通常是html)显示在浏览器当中

                    404:请求的资源没有找到,说明客户端错误的请求了不存在的资源(网址)

                    500:请求的资源找到了,但服务器内部出现了错误

        3.jsp内置对象

                 3.1 jsp内置对象简介                       

                 3.3 关于web程序的请求与响应模式               

                 3.4 out对象                           

                 3.5 表单的提交方式                            get和post区别:

                 3.6 request对象                         

                3.7getParameter();和getParameterValues();的使用

三、深入理解out对象与request对象

        1.out对象

        2. request对象

                1.1 常用方法

        1.2 实例

四、网页常见响应码详解(拓展)

        1.常见HTTP响应码                http状态返回代码1xx(临时响应)

        2.http状态返回代码代码说明:

        3.http状态返回代码代码说明:

        4.http状态返回代码代码说明:

        5.http状态返回代码代码说明:

        6.http状态返回代码代码说明:


一、Eclipse中Web工程项目目录结构

二、思维导图

三、认识jsp

        1.jsp基本语法

                1.1 什么是jsp?
                           jsp(java server pages)java服务器端页面,它是一种动态网页开发技术,使用了jsp标签在html网页中插入java代码;标签通常以<%开头以%>结束。

                1.2 jsp简介
                            (1)jsp全称:java server pages java服务端页面   如何HTML页面一样,能够通过浏览器去显示对应的效果
                            (2)jsp页面:与HTML页面不一样的是,jsp页面能写java代码也能编写HTML代码
                            (3)jsp页面其本质就是一个servlet,servlet就是一个java文件。
                            (4)项目部署到tomcat服务器后,如果通过浏览器访问它,这个页面会立刻通过"jsp引擎"转换成一个java文件(servlet)
                            (5)jsp页面能够编写java代码,必须要满足的格式<%-- <%  %> --%>
                            (6)jsp页面:后缀名  .jsp  而不是.html.

                                        静态内容:(HTML+css)(注释)
                                        动态内容:
                                                            jsp指令
                                                            jsp声明
                                                            jsp脚本
                                                            jsp表达式

                1.3 jsp页面元素的构成
                            注释(html注释,jsp注释,js注释  java)、声明、小脚本、表达式、指令、静态内容

                1.4 jsp指令
                            page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令。
                            include指令:将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句(引入其它页面)
                            taglib指令:使用标签库定义新的自定义标签,在jsp页面中启用定制行为(引入JSTL第三方库(if选择标签,for循环标签))
                                 整个jsp体系中,指令:三大指令
                                 作用:可以设置编码可以引入其它页面可以引入第三方插件标签

                1.5 page指令详解

                                 page指令:指定jsp文件的编码以及html标签的编码也可以引入                                java中的系统类,该指令必须位于jsp页面的顶部。
                            ①语法:<%@ page 属性1 = "属性值" 属性2 = "属性1,属性2"...属性n = "属性值n"%>
                            ②page指令中常用的三个属性
                                        language:指定jsp页面使用的脚本语言   java
                                        import:通过该属性来引用脚本语言中使用到的类文件  无
                                        contentType:用来指定jsp页面所采用的编码方式  text/html                   默认字符集:ISO-885-1----纯英文

<%--
					格式: <%@ page import %>
				
					作用:指定该文件可以识别java语言,内容基于html,编码utf-8  整个jsp页面的编码是utf-8
					<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    				作用:在jsp页面中引入系统类导包
   					<%@page import="java.util.Scanner"%>
				--%>

                    1.6 关于jsp注释
                            ①html注释   <!-- -->        //客户端可见
                            ②jsp注释  <%--html注释--%>        //客户端不可见
                            ③jsp脚本注释
                                           //        单行注释
                                           /**/        多行注释

                            <%   java代码     %>        jsp中编写java代码
                    在jsp页面中执行的java代码,语法:<%Java代码%>

  【案例】
    <%
        //out属于jsp九大内置对象之一
        //向浏览器输出信息
        out.print("大家好,欢迎大家学习javaweb");

        %>

                1.7 jsp声明
                    在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内  适合提交数据量大,安全性高的用户信息  比如  注册  修改  上传等功能(安全性高,效率低)

                                基本的表单标签形式:

 <!-- 表单标签  -->
	 <form action = "a.jsp"  method = "">
	 	<!-- 普通文本输入框  -->
	 	<input type = "text"/>
	 	<!-- 密码框 -->
	 	<input type = "password"/>
	 	<!-- 单选框 -->
	 	<input type = "radio"/>
	 	<!-- 复选框 -->
	 	<input type = "checkbox"/>
	 	<!-- 图片提交 -->
	 	<input type = "image"/>
	 	<!-- 文件选择 -->
	 	<input type = "file"/>
	 	<!-- 提交按钮 -->
	 	<input type = "submit"/>
	 	<!-- 重置 -->
	 	<input type = "reset"/>
	 	<!-- 下拉框  option选项 -->
	 	<select>
	 		<option></option>
	 	</select>
	 	<!-- 文本域 -->
	 	<textarea></textarea>
	 
	 </form>

    【例子区别】
    --用户登录界面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的意思:请求
                        客户端浏览器向服务器发送一个请求,会将客户端的信息封装到request这个对象中,后续在服务器中得到客户端的消息需要通过request对象的某些方法去获取到,将这些信息
                送往数据库中去匹配。
                
                web应用的原理:
                    客户端-------- >服务器    }}}------- >数据库
                                                |
                                客户端<----------服务器
---------------------------------------------------------------------------------------------------------------
客户端的请求信息被封装在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();        返回上下文路径
------------------------------

                3.7getParameter();getParameterValues();的使用

                                样式界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>zkingzz商城注册页面</h3>
	<hr/>
	<form action = "demo4_make.jsp" method = "post">
		账号: <input type = "text" name = "username"/>
		<br/>
		密码: <input type = "password" name = "password"/>
		<br/>
		爱好:
			<input name = "hobby" type = "checkbox" value = "吹牛逼"/>吹牛逼
			<input name = "hobby" type = "checkbox" value = "薅羊毛"/>薅羊毛
            <input name = "hobby" type = "checkbox" value = "踏山河"/>踏山河
            <input name = "hobby" type = "checkbox" value = "KTV"/>KTV
			<br/>
		<input type = "submit" value = "注册"/>
	</form>
</body>
</html>

                        使用方法界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>demo4_make.jsp页面   获取表单数据的页面</h3>
	<!-- 即将成功页面 -->
	<!-- 该页面的作用:获取到从demo4_register页面中编写的数据,在这个页面做一个数据库交互事情,判断:是否可以注册 -->

	<!-- 
		获取表单提交的数据   可以通过request对象直接获取到 
		但是,使用request获取数据时,必须在form表单上的每个输入项中标记name属性
			request中的方法是通过name属性来获取值的。
	 -->
	 
	 <!-- 因为request代码不能直接编写在HTML中,需要通过脚本格式去实现 -->
	 <%
	 	/* 获取表单提交的数据时,应当设置其编码格式,否则数据如果是中文在获取时会出现乱码 */
	 	request.setCharacterEncoding("utf-8");
	 
	 	//getParameter  获取请求参数  返回类型 String
	 	//实现通过request对象获取表单中输入的值。
	 	
	 	//1.获取账号
	 	String username = request.getParameter("username");
	 	out.println("表单输入的值为: "+username);
	 	//2.获取密码
	 	String password = request.getParameter("password");
	 	out.println("<br/>表单输入的值为: "+password);
	 
	 	
	 	//getParameterValues  获取一个key对应的多个参数
	 	//获取多个值   复选框可以选中多个值
	 	String[] hobbys = request.getParameterValues("hobby");
	 	out.println("<br/>您选择的爱好如下: ");
	 	if(hobbys!=null){
	 		for(String hb:hobbys){
		 		out.println(hb);
		 	}
	 	}else{
	 		out.println("没有选中爱好");
	 	}
	 	
	 
	 %>
	 

</body>
</html>


                例子:用户注册和request.jsp

                        通过URL地址参数传递能传递中文吗?---乱码
                         --使用request.setCharacterEncoding是无法解决问题的
                         解决方式:配置Tomcat服务器  server.xml
                                 <Connector port="8080" protocol="HTTP/1.1"
                                       connectionTimeout="20000"
                                       redirectPort="8443" />
                       加上属性  URIEncoding = "utf-8"
                       重启服务器即可。

三、深入理解out对象与request对象

        1.out对象

                out对象是JspWrite类的实例,是向浏览器输出内容常用的对象。

                1.1 常用方法

                1.2 实例

 

2. request对象

        客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应。它是

HttpServletRequest类的实例。request对象具有请求域,即完成客户端的请求之前,该对象一直有

效。

                1.1 常用方法

        1.2 实例

                date.jsp--->doDate.jsp获取数据date.jsp

                 doDate.jsp获取数据

 

四、网页常见响应码详解(拓展)

        1.常见HTTP响应码
                http状态返回代码1xx(临时响应)

                表示临时响应并需要请求者继续执行操作的状态代码。

        2.http状态返回代码代码说明:

                100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。

                101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。

        注意:http状态返回代码2xx(成功)

        表示成功处理了请求的状态代码。

        3.http状态返回代码代码说明:

                200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

                201(已创建)请求成功并且服务器创建了新的资源。

                202(已接受)服务器已接受请求,但尚未处理。

                203(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。

                204(无内容)服务器成功处理了请求,但没有返回任何内容。

                205(重置内容)服务器成功处理了请求,但没有返回任何内容。

                206(部分内容)服务器成功处理了部分GET请求。

        http状态返回代码3xx(重定向)

表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向。

        4.http状态返回代码代码说明:

                300(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(useragent)选择一项操作,或提供操作列表供请求者选择。

                301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。

                302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

                303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。

                304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容
 
                305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
 
                307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
 
        http状态返回代码4xx(请求错误)

这些状态代码表示请求可能出错,妨碍了服务器的处理。

        5.http状态返回代码代码说明:

                400(错误请求)服务器不理解请求的语法。

                401(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。

                403(禁止)服务器拒绝请求。

                404(未找到)服务器找不到请求的网页。

                405(方法禁用)禁用请求中指定的方法。

                406(不接受)无法使用请求的内容特性响应请求的网页。

                407(需要代理授权)此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。

                408(请求超时)服务器等候请求时发生超时。

                409(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。

                410(已删除)如果请求的资源已永久删除,服务器就会返回此响应。

                411(需要有效长度)服务器不接受不含有效内容长度标头字段的请求。

                412(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。

                413(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

                414(请求的URI过长)请求的URI(通常为网址)过长,服务器无法处理。

                415(不支持的媒体类型)请求的格式不受请求页面的支持。

                416(请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。

                417(未满足期望值)服务器未满足"期望"请求标头字段的要求。

        http状态返回代码5xx(服务器错误)

这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

        6.http状态返回代码代码说明:

                500(服务器内部错误)服务器遇到错误,无法完成请求。

                501(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。

                502(错误网关)服务器作为网关或代理,从上游服务器收到无效响应。

                503(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

                504(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。

                505(HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值