前言:如果说html为静态网页基础,那么jsp就是动态网页基础,两者的区别就是jsp在html的前面多加了几行而已。当然,jsp里面对java的支持度更高。要明白,js只是嵌入在客户端的小程序小脚本而已。Jsp里面也有一些脚本语言,这个主要是和后台有联系的,或者各个网页之间有联系的。所以,千万不要弄混。
1、jsp的执行过程
JSP不能直接运行,需要翻译。
Jsp执行过程
- 翻译阶段
Jsp被web容器中的jsp引擎转换为java源码 .java
- 编译阶段
源码被翻译为.class文件,字节码文件。
- 执行阶段
部署服务器的过程其实就是编译的过程,web获取客户端的请求后,web开始执行字节码文件。
如果内容被更改,需要重新部署
系统里面有原来的.class文件,就会执行原来的文件,不会执行这个。
2、jsp的页面组成
- 静态内容:html静态文本 保留html部分
- 指令 : <%@ 开始 %> 结束 一般可以引入一些java类的包
- 表达式 :<%=java表达式%> 一般是java赋值代码
- 小脚本 :<%java代码 %> 一般的java代码
- 声明 :<%!方法%> 一次声明,多次使用,实现代码共享 语言重用
- 标准动作:<jsp:动作名>开始 </jsp:动作名>
- 注释 :<!-- --> 客户端可以查看到 <%-- --%> 客户端看不到 供程序员看到 通过 在浏览器中 按 F12查看源码。
3、几个问题汇总
问题:1、jsp(java server page的简称) 与 java 区别?
Jsp是一种网页语言。Jsp = java + JavaScript + html;java 是一个平台,分为三个版本:javaSE,javaEE,javaME。 jsp属于javaEE里面的一种技术,属于动态网页制作。
2、jsp与html?
Jsp是动态网页制作,jsp是在html静态网页的基础上添加jsp脚本使得html静态网页变成动态网页。
3、昨天编的代码不是jsp?
不是,只是简单的JavaScript。脚本语言JavaScript,其可以嵌入到jsp,asp,php等动态网页中去。
4、jsp与js?
不是同一种技术。
5、关于昨天的 ; 问题。 可有可无
6、可否在jsp页面include html页面?
Jsp中嵌入html这个简单,完全兼容其代码。Html转换为jsp只需将html代码全部拷贝到jsp下面,保留下面几句代码即可。这样的话,我们就可以在jsp页面中调用即可。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
我们不能在html页面中嵌入jsp页面,因为jsp页面需要java web服务器解析,比如 tomcat等著名的web服务器。
JSP全称是:java server page,意思是基于JAVA服务器的网页技术,跟asp,php一样,都是网页制作用的语言
JavaScript:也成为JS,跟JAVA没啥关系,就是赶时髦起个这名字,是一种脚本语言,嵌套在网页中实现各种功能的,比如禁止右键菜单,禁止复制什么的
JSP,ASP,PHP都能嵌套使用JavaScript。
JAVASCRIPT从其名称含义是JAVA脚本,是在浏览器中运行的脚本语言,由于其大部分语法规范取自于JAVA语法规范,所以取名为JAVASCRIPT。JSP是JAVA SERVER PAGE的首字母缩写,顾名思义,是JAVA的服务端页面,其动态语法部分完全是JAVA规范。JAVA的概念这里就不描述了。总结:JSP是JAVA技术的其中之一,所以学好了JAVA过渡到JSP从编程角度来讲比较容易,学好JSP以后要想学好JAVA,就还要学习更多的JAVA方面的东西,比如JAVABEAN,企业级应用等等。JAVASCRIPT严格来讲,除了语法参照了JAVA语法规范外,和JAVA毫无关系,所以两者之间只是语法规范类似,相互之间的过渡就只有语法能够参照,其他的都得分别去了解,JAVASCRIPT是过程式语言,JAVA则是面向对象的
4、jsp页面的新建
新建
有些编码方式不支持中文, gb2312 utf-8 支持中文
<%@ include file= %>
在哪里插入 jsp页面,他就在哪里出来
5、小问题汇总
表达式 是用来显示 内容的。
路径问题需要引起注意: ./ 当前目录。 ../ 上一级目录 ,搞清楚相对路径与绝对路径
6、数据传递
页面间如何传递数据:
- jsp内置对象
不需要new直接用,因为内置对象使用频繁。相当于public声明的全局函数。
Out session request application response
相当于 Math.xxxx(); 静态方法,已经实现。
一问一答 请求—响应 request --- response。
一个session 由多个请求响应构成的。 简称一次会话。
一次购物的过程 就是 一次会话, 其实这里面有多个 请求响应构成。
- jsp里面的作用域
可以类比C++或C里面的变量的作用域。
Page:当前页面有效
Request:一次请求范围内有效。
客户端跳转:客户单击超链接跳转到另一个页面;通过浏览器地址到另一个页面。Request失效。
服务器端跳转:request依然有效。
Session:客户浏览器与服务器一次会话范围内。服务器断开连接即失效。Timeout 也是失效的一种。把浏览器关掉也是失效。通过它,可以搞 用户界面访问控制。
Application:整个服务器范围内,服务器停止以后才会失效。网站访问量 :xxxxxxxx。这个值就是放在application里面的,当然可以放在数据库里面,当你系统崩溃了,application里面的值就没了。
- request对象主要用于客户端请求
上次搞的 return false; 与 返回 null ,空; 是有区别的。
设置字符编码;setCharacterEncoding(); //乱码问题
转发请求,getRequsetDispatcher(); //服务器端的跳转 超链接是客户端的跳转。
4、举例
鼠标点击在超链接上,会有标签出现。这种方式的数据传递是采用get方式,数据不太安全。没有post安全。
当超链接里面有多个参数的时候,我们一般用 & 连接符来增加。
5、表单编程模式
封装到Request对象里面去。 我们叫做form编程。针对一个form里面的对象进行编程。
当我们value为汉字的时候,另一个页面可能会出现乱码,所以,我们写英文就可以解决这个问题。
表单处理编程模式是最常用的方式。
下面是利用表单处理模式来解决用户登录问题的步骤:
- 用户输入数据并提交
- Jsp进行处理
- 返回不同结果
错误1:跳不成功
在上面的代码中,代码有问题。因为在jsp 里面,用 == 不行,必须用方法实现。Equal (); 比较内容,而不是引用。
其中 get 是直接带参数的。一般用于:form表单(感觉不太对) 和 超链接。
Post是超链接不带参数的,比较安全。
http是应用层协议,其底层是tcp实现的。而http的内置对象是基于http的,所以页面之间通过http内置对象传递数据是通过tcp协议来实现的。
Post 模式:
这个里面包名,必须定位到底层,这个和在src后台里面写包名不一样。