Jsp基础

来源:互联网 发布:python tcp连接池 编辑:程序博客网 时间:2024/05/06 04:43

一、web概述

1、动态web的实现方式

*CGI:公共网关接口

可以使用各种语言实现,实际上是一种多线程的处理语言,所以性能很低

*PHP超文本预处理

形式基本上只能为个人开发或者是小型项目的使用。

*ASP 动态服务页

Windows_iis+sql Server

*JSPjava server page,java服务页)服务器端小程序

不受平台限制,可以使用多种的操作系统,开发工具,开发平台,数据库,性能比较多

安全性比较好。

补充:Servlet 缺点是界面不好,所以出现jsp技术jsp强大主要是因为可以和javabean结合使用(jsp做界面)javabean做后台在结合servlet

2

二、javaEE概述

1、架构

主要用于企业级应用程序的开发,主要以B/S作为主要的开发模式

2javaEE核心组件

3javaEE在企业环境中的位置

4、javaEE

5、

5Struts开发框架

Struts就是WEB容器之中才有的内容,只有将MVC设计模式掌握好了,才可以在各种技术中学习

总结:

*Java EE架构主要由组件,容器,服务组成,在整个javaEEMVC是其核心设计思路

*Struts开发主要是为了解决web层的开发问题,可以节约设计的成本

三、javaEE核心十三种技术

1、java数据库连接(JDBC)

 类型1:JDBC-ODBC桥接

 类型2:JDBC-native驱动桥接

 类型3:JDBCnetwork桥接

  类型4:纯JAVA驱动

2、java命名和目录接口(JNDI

JNDI是为了对高级网络应用开发中的使用的目录基础结构的访问。实际上这个目录是一个特殊的数据库,提供了对存储数据的快速访问,不像传统的目录服务访问方式——你必须提供不同的API接口访问不同的目录服务

3、企业java beans EJB

javaEE其中一个引人注目的技术是EJB.它提供了一个架构来开发和配置到客户端的分布式商业逻辑,因此可以明显减少开发扩展性,高度复杂企业的难度

4、javaSever JSP

5、Java Servlets

6、Java IDL/CORBA

通过javaIDL支持,开发者可以将javaCORBA集成。

7、Java事物体系(JTA)/java事务服务(JTS

8、javaMailjavaBeans激活架构(JAF

9、Java信使服务(JMS)

JMS是一个用来和面向信息中层通信的API

10、XML

11、Struts

12、Hibernate

13、Spring   (ssh)

第二章javascript

一、javascript介绍

是一种基于对象(object)和事件驱动(event driven)并具有安全性的脚本语言是由netscape公司的livescript发展而来,可以实现和html的相互操作,并且完成丰富的页面交互效果

1javascript事件处理

2Windows 内置函数

第三章XML

第一部分:前导区,规定出了XML页面的一些属性,在里面有三个属性:

Version :表示使用的XML版本

Encoding:页面中使用的文字编码,如果有中文的话,则一定要指定

Standalone:XMl 文件是否是独立运行,如果需要进行显示可以使用CSS或者XSL控制

第二部分:数据区,所有的数据区必须有一个根元素,一个根元素下可以存放多个子元素,但是要求每一个元素必须完结,每一个标记都是区分大小写

第四章JSP

一、jsp注释

1、显式注释语法:

《!--注释语法--》   客户端就可以看见

2、隐式注释语法     客服端无法看到

*///

*/* */

*<%--  --%> jps注释

既然是JSP程序必须使用WEB服务器

3、jsp的基本指令

*page指令

*include指令分为静态包含和动态

1、静态包含(编译时包含)它包含的所有JSP会编译成一个servlet

2、动态包含(先包含再编译)

*taglib指令

二、Scriptlet

JSP中最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的java程序都必须使用Scriptlet标记出来

1、第一种:<%%>:在此Scriptlet中可以定义局部变量,编写语句

2、<%!%>:可以定义全局变量,方法,类

一般而言这个操作都是声明全局常量较多,而所谓的定义方法或定义类基本上是不使用的,也没有必要这么做

3、<%=%>:用于输出一个变量或一个具体内容

Out,println 和这个一般使用哪个比较好呢,一般使用标签的这种形式比较好,以后输出就用<%=%>

4.一般标签太多就用<jsp:scriptlet></jsp:scriptlet>但是这个标签指令不经常用,只需要了解就可以

三、page指令

1、设置MIME《页面编码》

<&@ page language=java contenType=text/html;charst=GBK%>

2\设置文件编码

contentType,主要的功能还是设置MIME。而之后写的charst只是指定了编码,但是也可以通过pageEncoding 来指定编码,这个在以后的开发工具中会经常出现

补充:

JSP中,如果pageEncoding存在,那么久由他,否则由contenType

3、错误页的设置

1)如果地址栏上没有发生任何的改变,依然是那个网页,但是内容以及改变,这种不改变地址栏的跳转都称为服务器端跳转

2)在实际的使用中,最经常出现的问题:404505,而且程序中也有可能有异常:NullPointerEXception,如果集中实现跳转,就必须改WEB.xml

四、数据库的链接

把数据库的驱动程序拷贝在服务器lib里面

第一节

五、包含操作

一般正常的页面组成来看,一共分为四个区域

1、在每一个JSP页面(html)都包含工具栏,头部信息,尾部信息,具体内容

2、将工具栏,头部信息,尾部信息都分为各个独立的文件,以后用的时候直接导入进来

3、在JSP中如果要实现包含操作,有两种做法,静态包含,和动态包含

1)静态包含语法(就是将内容进行了直接的替换,就好比程序定义的变量)

<%@ include file="要包含的文件路径"%>

2)动态包含语法

*不传递参数:

<jsp:include page = {要包含的文件路径|<%=表达式%>} flush=true>

*传递参数:

<jsp : include page= {要包含的文件路径|<%=表达式%>} flush=true>

<jsp:param name = 参数名称 value=参数内容/>

</jsp:include>

六、跳转指令

<jsp: forward page = “”>

</jsp:forwards>

1、使用跳转可以完成页面请求的传递

2、跳转操作属于服务器跳转,跳转之后的页面路径依然没有改变

第二节 jsp内置对象

一、Jsp中的九个内置对象

1pageContextjsp的页面容器,代表JSp页面的运行环境、封装了对其他8大隐式对象的引用。它自身还是一个域对象,可以用来保存数据。用在自定义标签开发技术里面

*pageContext类中定义了一个forward方法和俩个Include方法来分别简化和替代RequestDispatcher.forward方法和include方法。方法接受的资源如果以/开头,代表当前WEB应用

pageContext.forward(/1.jap)  //实现跳转

2Request:得到用户的请求信息

3Response:服务器向客户端的回应信息

4Session:用户保存每一个用户的信息

5Application:表示所有用户的共享信息

6Config:服务器配置,可以取得初始化参数

7Out:页面输出

8Page:表示从该页面中表示出来的一个servlet实例

9Exception:表示jsp页面所发生的异常,在错误页面中才起作用

二、JSP常用标签

1、<jsp:forward page =/index.jsp>

2、<jsp:include page = /1.jap>

3、<jsp: forward>

三、四种属性范围

1Page(pageContext)在一个页面中保存属性,跳转之后无效.则一个Page范围中的内容只能保存在一个页面中

2Request:只在一次请求中保存,服务器跳转后依然有效。Request属性范围表示的是在服务器跳转之后,所有设置的内容依然会保存下来

页面跳转之后,可以取得,但是如果现在一直有服务器端跳转,则可以一直传递过去,但是如果换了一种形式,使用超链接进行页面的跳转

如果使用了超链接,首先地址栏会发生改变,所以地址栏发生改变的跳转都是属于客服端跳转,则无法取得request属性

3Session:在一次会话范围中,无论是客户端跳转还是服务端跳转都可以使用,只要属性设置了就都可以取得。既然此时的客服端跳转都没有取得,那么服务器跳转就一定可以取得了。

如果此时,再打开了一个新的浏览器的话,则就无法取得之前设置的seesion了,因为,每一个session只保存在当前的浏览器之中,并且可以从相关的页面中取得

对于服务器而言,每一个连接到它的客服端都是一个seesion

4、Application:在整个服务器上保存属性,所有用户(每一个session)都可以直接访问

只要是通过了application设置的属性,则所有的session都可以取得,表示公共的内容,但是如果关掉服务器的话,则无法取得了。

总结:能使用page范围的就不要使用request,能使用request的就不要使用session,能使用session的就不要使用application,因为保存范围越窄,则肯定对于服务器的压力就越大

5、深入理解page

可以通过PageContext将一个属性设置成了request范围

一定要注意pageContext可以操作四种范围,这一点直接决定于以后的程序开发问题

四、page内置对象

Example:

<%@ pag contenType=text/html pageEcoding=GBK%>

<%@page import=java.util.*%>

<html>

<head><title></title>

</head>

<body>

<%

pagContext.setAttnbute(name,李四);

agContext.setAttnbute(birthdat,new Date());

%>

<%

String usename=(String)pagContext.getAnbute(name);

Date usebirthday=(date)pagContext.getAnbute(birthday);

%>

<h2>姓名:<%=username%></h2>

<h2>姓名:<%=userbirthday%></h2>

<jsp:forward page=pages.jsp/>   //跳转到另外一个页面

</body>

</html>

五、request内置对象

1、request内置对象是使用最多,其主要作用是用来接收客户端发送而来的请求信息,列如:请求的参数,发送的头信息等都属于客户端发来的信息

2、对应接口:public interface HttpServletRequest extends ServletRequest

3、显示头信息

4、角色验证

在之前讲解的tomcat

5、路径

对于request中的getContextPath()方法是一个非常重要的操作,以后通过它,可以解决路径的跳转问题

<%= request.getContextPath()%>/images/1024.jpg

<img src=%=request.getContextPath()%>/images/1024.jpg>

6、总结

Request中对于属性的操作也是非常重要的,可是到底使用getAttribute()什么时候使用getParameter()

如果要使用getAttribute()则之前一定会存在setAttribute的设置操作,否则无法取得

如果要使用getParameter()则表示接受参数,那么参数的来源有一下几种

1)表单提交

2)地址重写

3)通过<jsp:incude>\<jsp:forward>传递而来的参数

getParamter()是无效接受setAttribute()设置的内容的

六、response内置对象

1、response对象的主要作用是对客服端的请求进行回应

2、设置头信息

<%!

Int cont = 0;

%>

<%

response.setHeader(refresh,2);

%>

<%=cont++%>

3、刷新跳转

<%

response.setHeader(refresh,2URL=hello.html);

%>

但是有时候不是万能的

3、页面跳转

response.senRedirecthello.html)此时的跳转地址栏改变了,那么这种跳转属于客户端跳转,客户端是无法传递request属性范围内容

问题:两种跳转的区别是什么?Jsp:forwardresponse.senRedirect()

4、操作cookie

Cookie是浏览器所提供的一种技术,这种技术让服务器端的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在使用中本身的计算机,不须通过网络的传输,因而提高网页处理的效率,而且也能够减少服务器端的负载。但是由于Cookie是服务器端保存在客户端的信息,所以安全性也是很差的。

所有的Cookie应该保存在客户端,那么即使现在关闭浏览器后应该可以继续取得,

所以如果没有设置保存时间的话,默认是在一个浏览器上保存的,如果浏览器关闭,则cookie消失,如果保存一段时间则需要设置cookie.setMaxAge()

总结:response对象主要显示的就是服务器端对客户端的回应,对于cookie的操作本身是存在着安全隐患的,如果要存放客服端信息的时候都使用cookie保存

4request对象主要应用在HTTP协议上

<%@ pag contenType=text/html pageEcoding=GBK%>

<html>

<head>

<title></title></head>

<body>

<%

request.setCharacterEncoding(GBK);     //设置统一编码

String(request.getParameter(info).getBytes.(UTF-8));

String content = request.getParameter(info);

%>

</body></html>

七、session内置对象

1、对于每一个用户而言,实际上都表示一个不同的session,那么服务器是靠什么来区别这些用户呢?靠的是session id ,即每一个通过浏览器链接到服务器的用户都会由服务器自动的分配一个唯一的不会重复的编号

session.getID

2、每一个连接到服务器上的session ID是完全不同的,所以服务器就是依靠这些完成的,但是需要注意的是,对于ID的操作并不是成对的,因为在正常情况下如果存在了get方法应该存在set方法

之前cookie是自动设置的那个cookie就是每一个用户的session id ,所以在进行操作的时候使用到了cookie的处理机制

但是对于session的操作有一点必须说明的是,如果现在服务器关闭的话,则session ID肯定需要重新分配

3、登录和注销

Session在所有的项目开发中,用的最多的就是登录和注销

4、取得用户操作时间

5、判断新用户

session的对象中可以使用isNew()方法判断一个用户是否是第一次访问页面

6、总结

1session技术是JSP内置对象,可以直接使用

当用户打开浏览器访问某个网站时候,服务器就会在服务器的内存中为该浏览器分配一个空间,该空间被这个浏览器独占,默认时间为30min

2session可以做什么?

*网上商城中的购物车

*保存登录用户信息

*将某些数据放入到session中,供同一个用户的各个页面使用

*防止用户非法登录到某个页面

备注:

因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的时候才用。

1、怎么改变乱码

String u = request.getParameter(username);

u = new String(u.getBytes(iso-8859-1),gb2312);   国标码

八、application内置对象

1Apllicationjavax.servlet.ServletContext接口的实例化对象

2、取得绝对路径

一定记住的是this.getServletContest()方法一定要重点使用

3、文件操作

4、网站计算器

5、查看属性

     

九、Out对象

十、WEB安全性config

十一、pageContest对象

原创粉丝点击