JSP第一节课程
注意:在同样的情况下,记事本比Word占用内存小四倍
课前思考问题:
1、第一阶段(JSP的基础)
什么是JSP?
jsp是运行在服务器,用来接受客户端的请求,处理客户端的请求,将处理后的结果响应给客户端
2、第二阶段(Server(tomcat))
3、第三阶段(JSP的基础)
本章学习摘要:
1、程序类型
2、运行环境
3、目录结构
4、运行原理
程序类型
1)、桌面程序:
单机运行的程序,在本地上面运行,不需要联网
2)、C/S程序:
客户端/服务器网络程序,客户单需要安装专门的客户软件
特点:需要安装
多终端交互
需要联网
弊端:不能在单机上面运行出来
数据不能及时同步
3)、B/C程序:
浏览器/服务器网络程序,客户端不用安装专门的软件,而是使用统一的浏览器进行一个访问,也就是常见的网站。
C属于外部默认浏览器
特点:“联网,不需要过多软件,特殊的服务端口”666
同时B/S的模式具有很强的开放性,外部仍然是可以访问的、
结构易扩展
弊端:对于服务器要求比较高
数据传输速度比较快
软件的个性化特点比较差
运行环境
1)、运行环境:
运行环境是一种介乎编译器及直译器的运行方式。Java运行环境,称之为"Java Runtime Environment"(JRE)。
简单的来说就是说搭建自己电脑中的JDK,安装支持Servlet的web 服务器。并且JDK的版本符合Java开发软件的版本;Tomcat作为一个单独的小型的服务器,也是我们配置环境的时候,必不可少的一个部分。
2)、web开发:
Web开发就是开发B/S的软件
3、Web开发需要的技术
1、网站的前台的布局、美工 、动画
2、后台的处理程序
3、数据领域技术
4、系统架构的技术
Web应用:一个服务器上,,,
目前动态网站的技术:
ASP:Active ServerPages
PHP:Personal
Jdk是程序运行环境
Jre:是最小的程序运行环境,jdk中包含着jre
开发运行环境:
需要有JDK和服务器
开发工具:IDE
配置环境变量
定义在外部的变量全局变量
定义内部的变量局部变量
配置环境变量需要系统支撑一般会使用window系统,以及Linus系统。
成员变量
使用外部程序需要设置两个变量
JAVA_HOME存JDK根目录
TOMECAT_HOME存tomcat的根目录
Jsp
1、jsp文件 web 其他文件个文件颊
Web:classes文件 lib web.xml
Classes放置
JSP运行的原理
1、接受客户端的请求
2、在容器的内部将JSP文件转译成.Java文件
3、将.Java文件编程成.Class文件
4、将最后的结果返回个客户端
转译和编译的是在服务器内部运行的一定要注意
Servlet基础
本章学习摘要:
1、Servlet是什么?
servlet是一个Java类,servlet运行在服务器端,接受客户端请求,处理客户端请求
最后把结果返回给客户端
2、认识servlet的父类
3、知道servlet的生命周期
4、创建servlet
Servlet的简介
Httpservlet抽象类
httpServletRequest/httpServletResponse
A、怎么发起http请求的?
1、输入地址:http://.....
2、标签:<form>地址</form>
3、超链接的方法:<a //.....></a>同样的都是默认get的提交的方式
Servlet具有独立平台协议的特性,可以生成动态的web页面
他担当客户端的请求,与服务器响应中间层
B、就有特殊的规范性:
必须继承某一个特定的父类
必须配置以后才能进行执行
有特定的生命周期
Servlet是在Java代码中嵌入了页面代码
JSP是在页面代码中嵌入了Java代码
JSP不能执行,必须转译成servlet的classes的类才能执行
Servlet的生命周期中有三个重要的方法
Voit Init初始化方法创建
Void Service处理业务逻辑的使用的方法
参数:ServletRequest ServletResponse
Void destroy 销毁方法
Javax.Servlet.GenericServlet
Servlet接口是一个根,GenericServlet继承了servlet接口,httpServlet继承了GenericServlet
创建普通的时候和http无关
Servlet和servletConfig接口是被GenericServlet继承的
servlet基础
一、父类
GenericServlet
1、implement实现了“servlet接口”
2、用于开发基础servlet;不能处理http请求;
HttpServlet(重点学习)
1、extends继承了GenericServlet,是GenericServlet的子类;
2、用于处理http请求;
二、servlet生命周期
3个重要方法:
1初始化servlet
init(ServletConfig conf);
2处理业务逻辑
service(HttpServletRequest request,HttpServletResponse);
3销毁servlet
destroy();
三、创建servlet
1、必须继承某个类(HttpServlet/GenericServlet);
2、需要配置才能调用;
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.servlet.test.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
HttpServletRequest 接口重要方法
a、设置post方式编码集:request.setCharacterEncoding("utf-8");
b、拿到客户端参数:request.getParameter("name");参数名称
request.getParameter("name") 单个的属性值
4、HttpServletResponse接口重要方法
a、拿到输出流对象PrintWriter out = response.getWriter();
b、拿到二进制输出流ServletOutputStream out = response.getOutPutStream();
学习如何处理中文乱码
1、IDE编码集配置;
window→preferences→general→workspace→设置编码集
window→preferences→web——css、jsp、html→设置编码集
2、处理get方式乱码
在Tomcat服务器配置文件server.xml中<connector >增加URIEncoding="UTF-8"
文件格式,展示数据的信息
响应结果前设置编码:response.setContentType("text/html;charset=utf-8");
3、处理post方式乱码
接收参数前设置编码:request.setCharacterEncoding("utf-8");
例子1:
响应结果前设置编码:response.setContentType("text/html;charset=utf-8");
案例2:
Jsp的基础语法:
一、模板的数据
HTML模板
二、元素的数据
1、Java脚本的元素
<% %>执行代码用的
<%! %>定义我们的类的
<%= %>表达元素
<%! 变量方法的声明%>
<% 合乎Java标准语法的程序的片段%>
<% = expression%>
2、指令的元素
<%@include file =””%>静态页面的
jsp指令
page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令
include指令:将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句
taglib指令:使用标签库定义新的自定义标签,在jsp页面中启动自定行为
page指令语法
<%@page 属性1="属性值" 属性2="属性值1,属性值2" 属性n="属性值n"%>
引入静态的页面
3、动作的元素
<jsp:include page=””>
<jsp:param name=”” value=””>包含静态和动态的元素的
</jsp:include>
<jsp:forword page=””> page 属性用来页面的跳转的哦
<jsp:param name =”” value=””>
</jsp:forword>
4、标签的表达式
注意:
Jsp页面是由两部分组成的
Template date:固定的模板的元素
Page 的指令:设置整个JSP页面的属性和相关 的功能
ContentType =“” 表示MIME类型的和JSP的编码的方法
jsp页面元素构成
jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明。
jsp注释
在jsp页面的注释。
HTML的注释:
<!--html注释-->//客户端可见
jsp的注释:
<%--html注释--%>//客户端不可见
Jsp脚本注释:
//单行注释
/**/多行注释 快捷键:Ctrl+shift+/
jsp脚本
在jsp页面中执行的java代码
语法:
<%java代码%>
jsp声明
在jsp页面中定义变量或者方法
语法:
<%!java代码%>
jsp表达式
在jsp页面中执行的表达式
语法:
<%=表达式%>//注意:表达式不以分号结束
JSP的隐含的对象
一、内容回顾:
Html的窗体如何传递参数l
窗体中的输入的类型:
单选按钮/多选的按钮
表单的基本的格式:
<form action=”地址” method=“提交的方式”></form>
注意:所有的用法都必须放在form标签里面
例子:
二、JSP的隐含对象
1、9个隐含对象
Out:源于java.io.Writer类,它用于发送输出流到客户端。
Page:来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
pageContext:提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
Config:源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
Exception:用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
request:源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
Response:源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端
Session:源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
Applicationj:来源于javax.servlet.ServletContext。
2、四个作用域
pageContext:当前页面,也就是只要跳到别的页面就失效了
request:一次会话,简单的理解就是一次请求范围内有效
session:浏览器进程,只要当前页面没有被关闭(没有被程序强制清除),不管怎么跳转都是有效的
application:服务器,只要服务器没有重启(没有被程序强制清除),数据就有效
提交的方式:
Get的提交
在地址连输入的数量中间使用?连接,然后传送到
Get提交的字符有限制最大长度是255个字符数(2084个字节)
信息会在地址栏显示,信息不安全
Get是发送请求 的默认的方式
Post 的提交方式
Post中数据和URL是分开传送的
特点:
传送的数量没有限制
能够上传文件
信息不会在地址栏显示,安全性高
只有在表单里面method=post,情况之外,其他情况都是get的提交的方式
只有以下的三种控件可以传递参数服务器
1、<input>控件
Type= text|password|radio|checkbox|hidden|file(可以传送文件)
2、<select>控件
3、<textarea>控件
注意事项:
当选用复选框 传递参数的时候,或者是使用
<select multiply size = n>传递参数的时候,子服务器端必须使用
String[] request.getParameterValues(“name”)
其他 表单组件在传递表单参数的时候,在服务器端口均使用以下:
String[] request.getParameter(“name”);
http协议的简介:
Internet的基本的协议是三次握手
Http的协议的全称是超文本的传输的协议
Http的协议是基于请求的/响应的运作的方式
1、建立连接
2、发送请求
3、发送响应
服务器在处理完客户的请求以后,会
4、关闭连接
客户端和 服务器双方都是可以通过关闭套接字来结束TCP/IP的对话
HTTP的请求:
请求的详解
点击连接,提交请求、地址栏的输入web的地址就会发送一个请求
请求的服务器以及资源是由一个HTTP URL来指定的
协议名 主机名 端口号 资源名
请求参数:
?后面加参数名字或着参数值
隐含对象
JSP页面中不需要做任何的声明就是可以使用的对象JSP中共有9中隐含的对象
Page:object类型
Config:ServletConfig类型
Out:PrintWriter类型
Request:httpSerletRequest类型
response:httpSerletRequest类型
Session;httpsession 类型
Application:ServletContext类型
pageContext::表示此页面JSP的page的上下文
Exception:用于异常的处理,Exception类型
四个作用域:
作用域是变量使用的有效的范围。这个周期可以是但前页面的执行的时间,或者是一次请求从创建到死亡的这段时间。
PageContext:当前前页面吧的作用域
Request:从创建请求到气销往的过程
Session:一段时间
Application:服务器从开始到关闭为止
PageContext相当于Java中的this,它代表着当期年页面的作用域存放的属性值只能自当期那页面取出。
Session又叫对话,session对象是httpSession接口的实现
1、session内存空间是独立的,是不能跨区域访问的
2、session是存放服务器的
3、session中的对象,都是属于session的作用域的
举例:
与下面的调用存放在服务器里面的数值是相互作用的
Application对象的类型是ServletContext接口实现
当我们的服务器开启的时候,会创建一个公共的区域,任何的客户端都可以在这个区域里面进行一个存值,这个内存空间就叫做application
隐含对象(2)
章节回顾:
1、问:用户名字填写好的数据,通过form白哦单里面的哪一个属性来指定提价目的地?
答:action=“”;
2、问pageContext.getAttribute(“abc”)里面的ABC表示的是什么?
答:属性名
3、问:pageContext/session/request/application几个对象里面适用范围最大的是哪一个对象?
答:application对象
4、问哪些表单控件可以传递参数给服务器?
答:1、<input>控件
Type= text|password|radio|checkbox|hidden|file(可以传送文件)
2、<select>控件
3、<textarea>控件
5、怎样提交数据是get方式,怎样是post的提交的方式
Get的提交的方式:
1、输入地址:http://.....
2、标签:<form>地址</form>
3、超链接的方法:<a //.....></a>同样的都是默认get的提交的方式
Post的提交的方式:
1、在form表单里面指定的method=“post”;
一、本章的目标摘要
理解:
request /response/out对象
Session/application对象
Exception/config/page 对象
掌握:
<jsp:forward >与response.sendRedirect()重定向的区别
<jsp:forward >:页面的请求的转发,属于请求的一个作用域里面。
三个页面的请求的转发,是在项目的里面,不是想重定向的那样关闭之后,再次打开
response.sendRedirect():页面重定向会把第一个页面关闭之后,重新发起一个新的请求,这是一个重定向的概念
request的对象
1、Reuqest对象包含所有的请求的信息
如:请求信息的来源、标头。Cookies和请求相关的参数值等等
2、Request对象实现HttpservletRequest 的接口
在它接口里面提供的素有的方法,request对象是 都可以使用
HttpservletRequest:是当我们请求发生的时候,他把所有的请求信息放到我们的对象里面,通过request对象,获得所有的请求的信息
3.!Request的对象
除了前几章节Request的方法除外、还有其他的方法
之前获得的request的方法:
Request.getParameter();获得参数的方法
Request.getParameterValues();获得多个参数值的方法—获得一个数组
setAttribute(参数名(String 类型的) 参数值(Object 类型))设置属性值,把我们的属性值放到request的作用域里面。
getAttribute()获得属性的方法
removeAttribute()移出属性值的方法
setEncoing(”utf-8”)处理request的编码集的方法
方法 说明
getContextPath():获得站台的路径---项目的根路径
getMethod:获得客户端提交的请求的方式
getRealPath(“/”):获得站点在服务器的真是的路径---全路径
getRemoteAddr():获得客户端主机的IP地址
getRequestedSessionld():获得session 的ID
getSession():获得session的对象
getLocale().getCountry():获得客户端浏览所属国家的代码
处理HTTP请求的报头
1、在读取请求报头的时候,我们同常用的方法:
httpServletrequest的getHeader(String name)方法、getHearNames()方法和getHeader(String name)
getHeader(String name)方法:获得我们的请求头的信息的
getHearNames()方法:可以获取我们有哪一些请求头的信息
Accept的方法
1、Accept:
用于指定的客户端接受哪一些类型的信息
2、AcceptLanguage:
是HTTP 请求里面的一个属性,用于告诉服务器浏览器可以支持什么语言。 如果网站支持多语种的话,可以使用这个信息来决定返回什么语言的网页
3、Accept_Encoing:
设置了gzip, deflate这个头信息,
类似于accept但是它用于指定可接受的内容
gzip增加传输量
deflate:它可以实现无损数据压缩。
host:
主要用于指定的被请求资源的Internet主机和端口号,他通常是从HttpURL中获取的
1、User agent:
用户代理
2、Connnection:
链接
3、Cookie:
属于临时文件,保存浏览网页的痕迹,使得再次上同一页面的时候提高网速,判断你是否登录过这个网站,有些可以帮你自动登录的
setContentType(String):设置返回客户信息的对象的类型
void addCookie(Cookie cookie):是将我们在request获取的属性名以及属性值放到客户端
Void setHeader(String name,String value):这个方法就是写到服务器返回给浏览器的相应报文头,name是名字,value是值,
Getwriter:是serverlet里面的,将所要响应的内容反馈到页面上去
getOutputStream() :就是看一个输出流
String sendRedirect(String url) 重定向到URL
MIME类型
MIME类型 说明
application/msword; Word文档
application/x-msexcel; excel的文档
application/pdf; pdf文件
text/HTML: HTML的超文本的链接
image/jpeg jpg或者是JPEG的图片
请求转发与重定向的区别:
1、请求转发
是昂我们收到的请求原封不动再转发出去
或者是假参数或者是属性
2、重定向转发
是原请求的后期的结束,重新创建的请求发出去
Response对象设置响应头的参数
3、对于客户单的响应参数可以在response中进行参数的设置
需求:
需要每三分钟重新响应一次
Response。SetIntHeader( “Refresh”,秒数180)
让我们的页面三分钟刷新一次
需要十秒钟后,进行再响应,那么:
Response.setHeader(“refresh”,“10;URL=http://www.sina.com”)
Application对象:
1、Application对象实现javax.servekt.ServletContext接口,
它主要的功能用于取得或者是更改Servlet的设定的服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都时同一个,直到服务器关闭
参数的说明、:
This:该servlet的对象
True:是不是需要session的对象
8192:最大缓冲的大小,单位的字节
True:是不是自动清楚缓冲区与
2、Config的对象
Config的对象则是存在与Servlet的初始化的数据结构,该对象实现于javax.servlet
ServletConfig 的接口
方法如下:
Public StringgetinitParrameter(String name)
Public Enumeration getinitParameterNames()
Public 等等
十、排错的方法:
500错误:根据错误提示,对于出错的代码进行一个修改
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
400——错误请求
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——没有发现文件:
session和cookies
第三个阶段(JSP的拓展)
一、Session
1、服务器为我们的客户端创建一个独立的内存空间
2、常用于:保持我们的用户的登录
默认的时候会有一个30分钟的时效的时间,会让我们在
二、cookies
1、存放与客户端硬盘的文本文件txt
2、常用于保存用户名和密码:同时还是有风险的,只是很小因为是文本文件
一般在dll文件、EXE的文件的有风险。
Cookies的简介
1、Cookies是一种保持web应用程序连续性的一中的方法
2、Cookies能够 帮助web 站点保存与有关访问者的信息,以便于服务器更好的识别访问者。是实会话跟踪的一种重要的方法
3、作为客户单的一类,cookies的信息以文本的形式保存客户端的硬盘上面,在硬盘下面\
Documents and Settings,当前的登录名对应的目录,可以看到一个名为cookies的子目录,噶目录下面保存着许多的文件保存的就是cookies的信息。
4、Cookies文件是属于文本的文件,但是经过加密过得,一般情况下面,一般通过普通的文本的工具是没有办法去查内容的。
5、由于cookies文件是加密过的,所以说一般的用户看来只是一顿没有任何用处的数字以及文字的组合,但是对于服务器的处理诚意可以通过它来成立各种 的功能的实现。
6、浏览器一般只是允许存放300个Cookies,每一个站点最多存放20个Cookies,每一个Cookies的最小的限制为4KB,不同的浏览器对于cookies的限制是不一样的。
7、Cookies的原理:
8、如何开启浏览器的cookies
浏览器---设置---Internet选项------隐私设置----高级-----替代cookies的处理
如何读写cookies的对象的
使用cookies必须结婚后额request的对象和response,
1、写cookies到客户端使用response,
2、读取客户端的cookies的使用的request
写:
Cookies c= new cookies(String String);
C.setMaxAge(int)//存活的时间,单位是:秒
Response.addCookie();
读:
Cookies[] cs = request.getCookies();
For(i=0;i<cs.length;i++){
遍历cookies的数组
}
Cookies对象的方法
Cookies对象的方法有: |
|
Public Cookies(String String) | //构造的方法 |
Void setMaxAge(Int) | //设置cookies的过期的时间,如果说是不设置;那么cookies知乎在会话中有效果,并且不会保存到客户端的磁盘中,,关闭浏览器后才会消失。
|
String getName(); | 获取cookies的名称 |
String getValue() | :获取cookies的值 |
Void setValue(String); | 设置cookies的值 |
Void setPath(String); | 设置cookies在哪一个目录下面的JSP的文件中的有效果,如果参数是/;此时的服务器上面页面都可一接收到该cookies。 |
Cookies的弊端
Cookies的注意的事项:
1.1、Cookies的信息是在浏览器里面的,但是并不是所有的浏览器都支持cookies的功能,不同的浏览器对于cookies的都有不同的限制;
1.2、Cookies的传输的数据的大小(4kb)限制的了一些需要的大数据的储存应用的需求
1.3、不同的网站中储存的cookies不是通用的
1.4、cookies的安全性上面可能会面临着挑战和质疑。
例如说:cookies信息可能会泄露个人隐私或者是被用来收集网上的登陆的习惯;
5、Session的对象
1、Session对象提供一种机制,让服务器能够辨认不同的客户端。
2、是服务器和客户端的另一种保持状态的有效的方法
3、与cookies不同的是Session信息保存在服务器端
4、服务器通过不同的session对象来记录不同的客户端。
6、服务器的分配的原理:
Session对象
Session对象实现javax.servlet.http.HttpSession 接口,方法如下:
方法 | 说明 |
String getld() | 取得session的ID |
Void invalidate() | 取消session对象,并且将对象存放的内容完全抛弃 |
Void setMaxInactiveInterval(int) | 设置最大的session的活动的时间,如果超过这个时间不活动的话,session就会失效,单位为秒 |
1.1两种方式获取session的ID:
Request.getid();
Request.getRequestedSesionid();
掌握cookies的投票的程序
使用session结合的application的方法
session会话结束的四种的方法:
1.1、在web.xml文件里面设置最大的活动的时间
配置文件的方式;
<!—设置session的过期的时间,单位是分钟-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
值为-1表示永远都不过期,不推荐使用
1.2、在JSP中通过session.invalidate()的方法直接关闭一个会话
1.3、关闭浏览器之后,服务器并不知道浏览器已经关闭,但是session的内容依然存在,但时间后无人认领,将会自动过期
1.4、调用session. setMaxinactiveinvalidateral(1) 一秒钟之后不用将会自自动过期
因内容过长不方便整理,遂整理文档格式重新发;如下:下载https://download.csdn.net/download/Controller_wgy/12526292