java_web 快速入门之第二章 jsp基本语法&表单提交方式

一:jsp的基本概念

       JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

  • jsp的组成部分

  1. 静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.

  2. 动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。

二:为什么要学习jsp?

        JSP是为了简化Servlet的工作出现的替代品,Servlet输出HTML非常困难,JSP就是替代Servlet输出HTML的。

  • jsp的运行原理

 

 

  1. 当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;

  2. 如果是第一次请求页面,或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间有些长;

  3. JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;

  4. 容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)

 三:jsp模板元素 (jsp页面的html代码)

  •  基本概念

  • jsp页面中静态的html内容称之为模板元素。在静态的html内容中可以嵌套JSP的其他各种元素来产生动态内容和执行业务逻辑。

  • jsp模板元素定义了网页的基本框架,即定义了页面的结构和外观

四:jsp脚本片段  (jsp页面的java代码)

  1. JSP脚本片段(scriptlet)是指嵌套在<% %>之中的一条或多条java程序代码。

  2. 在JSP脚本片段中,可以定义变量,执行基本的程序运算,调用其他的java类,访问数据库,访问文件系统等普通java程序所能实现的功能。

  3. 在JSP脚本中可以直接使用jsp隐式对象来完成web程序所能实现的功能。

  4. JSP脚本片段中的java代码将原封不动的搬移进由jsp页面所翻译的Servlet的JSPService中。因此必须严格遵守java规范。

  5. 一个jsp页面可以有多个脚本片段,脚本片段可以互相访问。

五:jsp表达式

  1. jsp表达式提供了将一个java变量或者表达式的计算结果输出到客户端的简化方式,她将要输出的的变量或表达式直接封装在<%=和%>之中。例如:Current time:<%=new java.util.Data()%>

  2. jsp表达式中的变量或者表达式的计算结果将被转换成一个字符串,然后被插入进整个JSP页面输出结果的相应位置处。

  3. jsp表达式中的变量或者表达式后面不能有分号(;),jsp表达式被翻译成Servlet程序中一条out.print(…)程序。

<%@ 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>循环输出数组中的数值</title>
</head>
<body>
<%
    	  int[] value = { 60, 70, 80 };
    	  for (int i = 0; i < value.length; i++) {
        	 	  %>
          <%=value[i] %><br/>
	  <%
		  }
	  %>
</body>
</html>

六:jsp声明

  1. jsp声明将java代码封装在<%! %>之中,它里面的代码将被插入进Servlet的JSPService方法的外面,所以jsp声明可用于定义JSP页面转换成Servlet程序的静态代码块,成员变量和方法。

  2. 多个静态代码块,变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个jsp声明中。

<%@ page language="java" import="java.util.*,java.text.*" 
	contentType= "text/html; charset=UTF-8"%>
<html>
	<head>
		<title>方法声明</title>
	</head>
	<body>
		<%! 
			String formatDate(Date d){
				java.text.SimpleDateFormat formater = 
				new SimpleDateFormat("yyyy年MM月dd日");
	        	return formater.format(d);
	    	}
		%>
		第一次调用:今天是<%=formatDate(new Date())%>
		<br>
		第二次调用:今天是<%=formatDate(new Date())%>
	</body>
</html>

 

七:jsp注释

1.HTML注释 

  • 格式:<!-- 注释内容-->

  • 使用HTML注释的话虽然在表面上看不到东西,但是打开浏览器查看源代码的话还是可以看到的

2.jsp注释

  • 格式:<%-- 注释内容 --%>

  • 查看网页源代码的时候是看不到的

3.jsp程序段中的注释

  • 格式://单行注释   /* *多行注释 */

八:jsp常见错误代号

404错误 —— 找不到访问的页面或资源URL输入错误,未部署项目。

500错误 —— JSP页面代码有错误

302状态码+200状态码 —— 重定向

200状态码 —— 转发

九:内置对象之request 登录对象

  • 内置对象的基本概念

为了Web应用程序开发的方便,在JSP页面中内置了一些默认的对象,这些对象不需要声明就可以在脚本代码和表达式中随意使用。

  • 九大内置对象

  1. request    请求对象——HttpServletRequest

  2. response    响应对象——HttpServletResponse

  3. session    用户会话对象——HttpSession

  4. application    应用全局对象——ServletContext

  5. out    输出对象——PrintWriter

  6. page    当前页面对象——this

  7. pageContext    页面上下文对象——PageContext

  8. config    应用配置对象——ServletConfig

  9. exception    应用异常对象——Throwable

  • out 输出流对象的基本语法:

  • 对应用服务器上的输出缓冲区进行管理

  1. close():关闭输出流,从而可以强制终止当前页面的剩余部分向浏览器输出

  2. clearBuffer():清除缓冲区里的数据,并且把数据写到客户端去

  3. clear():清除缓冲区里的数据,但不把数据写到客户端去

  4. getRemaining():获取缓冲区中没有被占用 的空间的大小

  5. flush():输出缓冲区的数据。out.flush()函数也会清除缓冲区中的数据,但是此函数先将之前缓冲区的数据输出至客户端,然后再清除缓冲区的数据

  6. getBufferSize():获得缓冲区的大小

  7. out.println();:用来向客户端输出各种数据类型的内容

  • request 登录对象的基本语法:

  1. int getContentLength():获取请求体的字节数,get请求没有请求体,没有请求体返回-1;

  2. String getContentType():获取请求类型,如果请求是get,那么这个方法返回null;如果是post请求,那么默认为application/x-www-form-urlencoded,表示请求体内容使用了URL编码;

  3. String getMethod():返回请求方法

  4. Locale getLocale():返回当前客户端浏览器的Locale

  5. String getCharacterEncoding():获取请求编码,如果没有setCharacterEncoding(),那么返回null,表示使用ISO-8859-1编码;

  6. void setCharacterEncoding(String code):设置请求编码,此方法只能对post请求中的参数有效

  7. String getContextPath():返回上下文路径

  8. String getQueryString():返回请求URL中的参数

  9. String getRequestURI():返回请求URI路径

  10. StringBuffer getRequestURL():返回请求URL路径

  11. String getServletPath():返回Servlet路径

  12. String getRemoteAddr():返回当前客户端的IP地址

  13. String getRemoteHost():返回当前客户端的主机名,但这个方法的实现还是获取IP地址;

  14. String getScheme():返回请求协议

  15. String getServerName():返回主机名

   16.int getServerPort():返回服务器端口号

 

十:表单提交的两种方式 

  1. get

  2. post

  3. 默认情况下是get方式

  • 两种方式的区别:

  1. get安全性非常低,它传输的数据在地址栏中就可以看到;而post安全性就很高,它传输数据比较隐私,在地址栏看不到

  2. get传送的数据较小,不能大于2KB。post传送的数据量较大,一般默认不受限制。也就是你的电脑内存有多大,它就可以传输多少数据

  3. get请求没有请求体,无法通过request.setCharacterEncoding()来设置参数的编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值