11月22日
JSP—Java Servler Page
Java EE是一个标准,而不是一个现成的产品。各个平台开发商按照Java EE规范分别开发了不同的Java EE应用服务器,Java EE应用服务器是Java EE企业级应用的部署平台。由于它们都遵循了Java EE规范,因此,使用Java EE技术开发的企业级应用可以部署在各种Java EE应用服务器上。它们有:WebSphere(IBM), GlassFish(SUN), Jboss(RedHat) WebLogic(BEA), tomcat(Apache)
Java SE(C/S)
编写(eclipse)
编译(javac)
解释执行( java)----JRE
Java EE(B/S)
编写
编译
解释执行(服务器)
厂商:IBM, SUN, RedHat, BEA, Apache的服务器符合Java EE标准,可以解释执行Java EE程序
服务器------容器------服务器中间件
Java EE组件简介:
1 Servlet
Servlet是Java平台上的CGI技术,Servlet在服务器端运行,动态地生成Web页面
2 JSP
JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术
细节:
JSP将会被首先转换在Servlet,并以Servlet的形态编译运行,因此它的效率和功能与Servlet相比没有差别
3 EJB----Enterprise Beans-----Java EE核心
EJB定义了一组可重用的组件,开发人员可以利用这些组件,像搭积木一样建立分布式应用。在装配组件时,所有的Enterprise Beans都需要配置到EJB服务器
关键字:
分布式:
1 程序分布式-----(集群):
效率提高,TCO—成本值
2 数据库分布式:
数据库的备份------镜像
EJB有不同的类型:
Session Beans—会话Bean---分布式技术实现
Entity Beans –实体Bean---DAO---Hibernate
Message-driven Beans----消息驱动Bean
4 JMS
JMS(Java Message Service,Java消息服务)是一组Java应用接口,它提供创建,发送,接收,读取消息的服务
5 JNDI—(Java Naming and Directory Interface)由于Java EE应用程序组件一般分布在不同的机器上,所以需要一种机制以便于组件客户使用者查找和引用组件及资源。
包括EJB,数据库驱动,JDBC数据源及消息连接等
6 JTA(Java Transaction API)
JTA提供了Java EE中处理事务的标准接口,它支持事务的开始,回滚和提交
7 JPA持久性存储API
8 JCA(J2EE Connector Architecture)
JCA是J2EE体系架构的一部分,为开发人员提供了一套连接各种企业信笺系统。开发人员就能够在任何的J2EE应用服务器中连接并使用它
9 JMX(Java Management Extensions)
JMX致力于解决分布式系统管理的问题
解压:java_ee_javadocs.zip
java_ee_javadocs/docs/api/index.html
Tomcat:
了解:
MS:IIS----.net, asp
Tomcat:
Tomcat是一款优秀的JSP/Servlet容器,最初由SUN开发,后来被贡献给了Apache社区。Tomcat现在的版本已到6。Tomcat6实现了Servlet2.5和JSP2.1规范
进入tomcat安装目录:
C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin---tomcat服务器的可执行文件:
bin/startup.bat //开启tomcat服务器
bin/shutdown.bat //关闭tomcat服务器
bin/catalina.bat //后台脚本
bin/catalina.bat star
bin/catalina.bat stop
lib----是所有tomcat服务器支持功能的jar包存放地
jsp-api.jar
servlet-api.jar
示例:我们的网站需要连接Mysql服务器,配置Mysql驱动:
1 下载MySQL JDBC驱动
2 将mysql-connector-javaxxx.jar复制到lib/
tomcat + MySQL || Oracle + JSP + Servlet + Struts || JSF + Spring + Hibernate + AJAX+ Linux
logs/ tomcat服务器日志
work/工作目录,jsp转换为 servlet的源文件 .java
conf/tomcat服务器配置文件
webapps //默认程序的发布地点
//一个目录代表一个项目
实验:
1 在webapps下建立一个文件夹(first)
2 进入first
3 新建一个文本文件,后缀名为.jsp
<%out.println("first Jsp
");%>
在bin/开启tomcat6w.exe
http://localhost:8080/first/first.jsp
C:\ProgramFiles\ApacheSoftwareFoundation\Tomcat6.0\work\Catalina\localhost\first\org\apache\jsp\ first_jsp.java
项目的发布:
1 将项目打包:.war(Web Archives)
1.1 jar cvfxx.war 目录
2 用户将.war包复制到webapp/即可
示例:
将first项目打为first.war,然后进行发布:
1 jar cvf first.war first
2 将first项目删除
3 在浏览器运行:http://localhost:8080/first/first.jsp
1 Java EE理论,名词解释
2 tomcat服务器
作业:
复习:
1 MySQL + JDBC +DAT + Factory
2 xhtml + div + css + javascript + xml
11月24日
1 结束XML
必须掌握:JDBC-XML-XSL
2 进入JSP(Java EE)
tomcat + MySQL + JSP + Servle + SSH + AJAX
JBoss + Oracle + JSP + Servle + SSH + AJAX
Tomcat
如何学习JavaEE 服务器?
1 服务器的目录结构
2 对应服务器的主要配置文件(*.xml )
tomcat的配置与管理:
1 tomcat的主配置文件
conf/server.xml
1.1 使用tomcat管理服务器中的项目
1 C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin开启服务器
2 conf/tomcat-users.xml
3 浏览器:http://localhost:8080
模拟条件:
1 webapp/first/first.jsp
2 浏览器:http://localhost:8080/first/first.jsp
修改admin密码
1 编辑conf/tomcat-user.xml
2 修改password=”123456”
为了服务器安全,可以修改webapps /manager的名称,也可以把manager删除
http://localhost:8080/
2 tomcat虚拟服务器配置:
一个IP对应多个Web服务(多个域名)
127.0.0.1分配两个域名:
www.163.com
www.google.com
准备工作:
1 修改hosts.conf
C:\WINDOWS\system32\drivers\etc
在hosts.conf加127.0.0.1 www.163.com www.google.com
开始—运行—cmd:
ping www.163.com
ping www.google.com
浏览器:http://www.163.com:8080
http://www.google.com:8080
2 修改tomcat
1 创建网站目录:
d:\my163\index.jsp
d:\mygoogle\index.jsp
<%
out.println(“www.xxx.com
”);
%>
2 编辑:conf/server.xml
虚拟服务器的标签:
浏览器:http://www.163.com:8080
http://www.google.com:8080
name:域名
appBase:硬盘物理路径
path:访问路径
docBase:项目目录
Context:代表主机中(Host)的内容
理解:path属性:
例1:path=””
访问:http://www.163.com:8080
例2:path=”mydiy”
访问:http://www.163.com:8080/mydiy
在tomcat中掌握的内容:
1 目录结构
2 tomcat jar环境配置:
将需要的jar包copy到lib/
3 主配置文件:
3.1 虚拟服务器的配置
3.2 端口的配置
4 tomcat中Web项目的管理,安全防范
5 Web项目的发布,打包
6 conf/web.xml
6.1 welcome-file-list
6.2 列出项目下的所有文件(便于调试Web程序)
回顾:
http://localhost:8080/first/first.jsp
刚才:
http://www.163.com:8080
web.xml中96行,改为true
listings
true
重启服务
浏览器:http://localhost:8080/first
3 进入JSP
打开ecliple,新建.jsp,选择倒数第二个
把C:\下的tomcat6w.exe关闭
体会1:
使用〈% %〉进行Java程序的编写,嵌入
体会2:
在客户端Browser看不到Java的源程序,因为JSP是服务器端脚本语言,它不同于xhtml,xml,javascript是客户端脚本语言
服务器端脚本语言:
简介:
主流:JSP(SUN),PHP(Zend),ASP(MS)
运行机制:
1服务器将嵌入在xhtml中的服务器脚本解释处理为xhtml
2 再将处理好的结果发送给客户端Browser
特点:网站是动态呈现的
客户端脚本语言:
主流:xhtml(w3c), javascript, xml,xsl,vbscript(MS),javascript(netspace)
运行机制:
1 客户端下载
2 客房端浏览器解释-----显示
JSP执行流程:
(1)客户端发出Request(请求);
(2)JSP Container将JSP转译成Servlet的源代码;
(3)将产生的Servlet的源代码经过编译后,并加载到内存执行;
(4)把结果Response(响应)至客户端
练习:
使JSP显示服务器日期
步骤:
1 导入java.util.Date;
第一行:<%@ page import=”java.util.*” %>
2 使用new Date
3 输出:
out.println( );
MyDate.jsp
11月25日
1 jsp语法:
JSP原始代码中包含:
1.1 JSP元素
由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误
1.2 Template(模板) data:
指的是JSP引擎不处理的部分,即标记<%……%>以外的部分(html.javascript)
2 JSP中的语法分为三种不同的类型:
2.1 编译器指令(DIRECTIVE)
<%@ page import = “java.io.*”%>
2.2 脚本语法(SCRIPTING)
2.3 动作语法(ACTION)
,
脚本语法介绍:
脚本语法包括
1 “HTML注释”:ßcommentsà
2“隐藏注释”: <%--comments--%>
3“声明”
<%!声明;[声明;] …%> //变量
4“表达式”
<% = %>相当于out.println( );
5“脚本段”
<% %>
新建项目:JSPDemo
WebContent/HtmlComments.jsp
Declaration.jsp
编译器指令:
<%@ page %>
page关键字:
作用于整个JSP页面,同样包括静态的包含文件,但是”<%@ page %>”指令不能作用于动态的包含文件,比如:””
ErrorTest.jsp
Errorpage.jsp
Buffer:
设置Buffer缓冲区的大小,当out对象将被编译的JSP页面向客户Web浏览器端输出时使用。它的默认值是8kb,假如你指定了buffer缓冲的大小,这个输出量将不低于你指定的大小
<%@ page buffer = “none|8kb|zekb”%>
autoFlush
该属性指定,当缓冲充满时,是否自动刷新,如果值为true(默认值为true), 则自动刷新,如果值为false,则当缓冲区溢出时,则会产生,而如果buffer属性的值为none, autoFlush属性的值不能为false
<%@ page autoFlush = “true | false” %>
动作语法:
//导入jsp
//转向
//插入一个applet或Bean
//创建一个Bean实例并指定它的名字和作用范围
,
myFunction.jsp
IncludeTest.jsp
“”标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象
“”标签以后的代码,将不能执行,它是服务器跳转
ForwardTest.jsp
ForwardPage.jsp
JSP基本语法结束
知识点2:
JSP的内置对象(隐含对象):
由于JSP是嵌入式的语言,不能显示的把一些必须的参数传递进来,比如Request对象,Responese对象等,所以在JSP规范中提供了几个隐含的对象来实现这些功能。所谓隐含的对象,就是大家约定好使用一个名字来指代某个特定的对象,在编写JSP的时候不用显示的声明就能使用,由JSP引擎负责在解释的时候把隐含对象加入到解释完.java文件中
隐含对象一览:
1 session对象
2 application对象
3 request对象
4 response对象
5 out对象
6 page对象
7 exception对象
8 pageContext对象
9 config对象
session对象:
当客户第一次访问Web服务器发布目录(一个Web服务器有一个或多个“发布目录“)下的网页文件时,Web服务器会自动创建一个session对象,并为其分配唯一的ID号,客户可以将其需要的一些信息保存到该session对象,以便需要时使用。session对象就是指通过getSession方法得到的对象,在JSP中是隐含对象,关于session对象的使用可以参见Servlet API
application对象:
当Web服务器启动时,Web服务器会自动创建application对象,application对象一旦创建,它将一直存在,直到Web服务器关闭,因此,application对象可以实现多客户间的数据共享,
一个Web服务器常常有多个发布目录,当Web服务器启动时,它自动为每个发布目录都创建一个application对象,这些application对象各自独立,而且和发布目录一一对应
request对象:
request对象主要用于取得客户在表单中提交的数据信息及多个网页之间数据信息传递等。同时通过它也可以取得Web服务器的参数。跟Servlet参数中的request对象相对应的
request对象的基类为:javax.servlet.ServletRequset如果传输协议是http,则是
javax.servlet.http.HttpServletRequest
response对象:
response对象主要用于向客户端输出信息,响应客户端的请求。跟Servlet参数中的response对象是相对应的
response对象的基类是:javax.servlet.ServletResponse
如果传输协议是http,则为javax.servlet.HttpServletResponse
out对象:
out对象基类是:javax.servlet.JspWriter类,跟Servlet中由HttpServletResponse得到的PrintWriter略有不同,但是都是从Writer继承而来,所以基本上还是一样的
page对象:
page对象:是当前JSP页面本身的一个实例,它的类型是:java.lang.Object
exception对象:
当JSP页面在执行过程中发生例外或错误时,会自动产生exception对象
在当前页面用<%@ page isErrorPage = “true”%> 设置后,就可以使用该exception对象,来查找页面错误信息
exception对象的类型是:java.lang.Exception类
exception对象的常用方法为:
String getMessage()
Void printStackTrace()
config对象
对应于javax.servlet.ServletConfig类,允许访问JSP配置信息,只在页面范围合法
今天2目标:
1 jsp的基本语法规则
2 了解jsp内置对象实践
11月26日
JSP内置对象实践:
1 request 主要方法:
1.1 getParameter(String name)
1.2 getAttribute(String name)
1.3 getCookies() //获得客户端Cookies
Cookies && Session:
Session服务器端
Cookies客户端
新建项目:JSPInnerObject
WebContent/ParameterALL.jsp
RequestTest.jsp
CallPage.jsp
练习:
使用表单进行数据传递,
表单中属性有:username, password
MyForm.jsp //表单页面
MyPost.jsp //获取表单数据,显示页面
2 response主要方法:
addCookie(Cookie cook):添加一个Cookie对象,用来保存客户端信息
setHead(String name, String value) :添加HTTP头信息
sendRedirect(String url) //重定向页面
//客户端跳转
RedirectTest.jsp
服务器端与客户端跳转的区别:
服务端跳转:表现客户端地址栏不发生变化
客户端跳转:表现客户端地址栏发生变化
服务器端跳转:可以传递页面间的数据
客户端端跳转:不可以传递页面间的数据
SetHeaderTest.jsp
3 Cookie:
C:\Documents and Settings\user\Cookies
Cookie技术简介:
在WEB技术发展史上,Cookie技术的出现是一个重大的变革。先是Netscape在它的Netscape Navigator浏览器中引入了Cookie技术,从那时起,World Wide Web协会就开始支持Cookie标准。以后又经过微软的大力推广(因为微软的IIS Web服务器所采用的ASP技术很大程度的使用了Cookie技术),即在微软的Internet Explorer 浏览器中完全支持Cookie技术。到现在,几乎所有的浏览大都支持Cookie技术
Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在用户浏览器上的文本文件,它可以包含有关用户的信息(如身份识别号码,密码,用户在Web站点购物的方式或用户访问该站点的次数),无论何时用户链接到服务器,Web站点都可以访问Cookie信息
Cookie JSP中的实现:
String cookieName = “MyFirstCookie”;
Cookie cookie = new Cookie(cookieName, “Test_MyCookie”);
cookie.setMaxAge(5); //5秒钟
response.addCookie(cookie);
CookieTest.jsp创建Cookie
ReadCookie.jsp 读取Cookie
目标:
1 request
2 response
3 Cookie
明天Seesion, 其它的内置对象
11月27日
练习:
创建一个具有用户名和密码的Cookie,保存时间为一周,并且可以读取存储的Cookie值
MyCookie.jsp
1 seesion
应用:在线购物,客户轨迹跟踪等
与Cookie的关系:
“seesion”对象建立在cookie的基础上
与Cookie的区别:
Session是服务器端存储用户信息机制,相对Cookie安全,可靠
主要方法:
getAttribute(Object obj)
setAttribute(String name, String value)
新建项目:Session
WebContent/CreateSession.jsp
GetSession.jsp
网站登录示例:
1 login.jsp //用户登录
2 login_check.jsp //检测用户名,密码
3 admin.jsp //管理页面
运行流程:
1 用户登录:login.jsp
2 login.jsp中form的action=”login_check.jsp”
3 login_check.jsp判断用户名,密码是否合法
3.1合法允许用户访问admin.jsp
3.2 不合法帮助用户跳转到login.jsp,并且给予智能提示
细节:
代表http://localhost/admin.jsp
是最高权限的页面
如果用户知道这个地址,那么直接访问这个页面会非常危险,所以一般admin.jsp会给予权限进入的是有合法权限的(合法的session)才可以访问,如果没有则不能直接查看,并且可以帮助用户跳转到login.jsp
整个代码的功能包含两个:
1 验证用户输入是否合法
1.1 是否为空
1.2 是否输入合法
2 验证session是否合法
新建项目:SessionLogin
WebContent/login.jsp
Login_validate.jsp
admin.jsp
logout.jsp
作业:
根据SessionLogin的思路,在重新编写一次,登录模块,重点
11月28日
out内置对象:
常用方法:
out.flush( ); //刷新缓冲区
OutTest.jsp
2 application内置对象:
对应:
javax.servlet.ServletContext
主要方法:
setAttribute(args1,args2)
getAttribute(args)
ApplicationTest.jsp
内置对象总结:
内置对象是JSP中非常重要的技术点
在其中重点掌握的:
reques
response
session(Cookie类也要掌握)
application
重要的代码示例:
SessionLogin一定要手工编写
编写Web网站如何分析:
以SessionLogin为例:
1 分析模块功能
2 模块功能需要多少个jsp配合,并且统一命名
login.jsp //登录
logout.jsp //注销
login_validate.jsp //验证
admin.jsp //操作
3 编写,测试
3 JSP + JDBC //积累代码量
3.1 JDBC驱动的配置:
驱动或外部jar包存放路径:
1 $TOMCAT/lib //全局
2 webappse/WEB-INF/lib/ //局部
3 eclipseà添加扩展jar包 //局部
解压mysql-connector-java-5.1.6
新建项目: JSPJDBC
WebContent/JSPJDBC.jsp
student.sql
1创建数据库,插入数据
2 编写JSP页面
练习:
实现学生姓名的查找功能
WebContent/search.jsp //表单提交查询信息
/search_do.jsp //访问数据库
//查询内容,并且显示
今天的目标:
1 SessionLogin登录模块
2 out, application内置对象
3 jsp+ jdbc+隔行变色表格
作业:
复习MySQL,将学生的查询功能完成
明天:JNDI, DAO
11月29日
JDBC工作流程:
1 加载驱动
2建立连接
3 传入SQL
4 处理结果集
5 关闭连接,释放资源
连接池:
1 加载驱动
2 建立连接
3 资源重用
程序员:
1 传入SQL
2 处理结果集
3 关闭连接
dbcp
tomcaat中使用tomcat-dbcp.jar
如何使用?
使用Tomcat创建连接池:
在实际使用时,我们可以让Tomcat提供数据源(DataSource),然后使用JNDI(Java Naming and Directory Interface)来获得DataSource
JNDI(Java Naming and Directory Interface):
JNDI是Java SE平台的一个标准扩展,提供了一组接口,类和关于命名空间的概念。很多Java EE技术,包括EJB都依靠JNDI来组织和定位(对象)。JDNI通过绑定的概念将对象和名称联系起来
JNDI主要API(SE):
Javax.nameing:包含了访问命名服务的类和接口。例如:它定义了Context接口,这是命名服务执行查询的入口
JNDI上下文:
JNDI将名称和对象联系起来,这种联系称之为绑定(binding)。一组这样的绑定称之为上下文(context), 上下文解析(即返回对象的查找操作)
上下文用Javax.naming. Context来表示
Context接口主要方法:
1 lookup(String name):接收字符串名
在Tomcat中配置JNDI数据源:
1 server.xml
2 web.xml //自己项目的web.xml
3 lookup去查找服务
新建项目:JSPJNDI
Webcontent/JNDITest.jsp
在server.xml中,到最后把后的/去掉,加,再加一句:如下:
在web.xml中加:
DB Connection
jdbc/students
javax.sql.DataSource
Container
Message.jsp
Resource属性元素概述:
MaxActive:最大连接数,取值0 不受限制
MaxIdle:处于空闲状态数目,取值0 不受限制
MaxWait:空闲状态最在空闲时间,取值-1 不受限制
Username:数据库用户名
Password:数据库口令
DriverClassName:指定jdbc驱动字符串
Url:数据库地址
Factory:指定生成DataResource的 factory的类名
练习:
SessionLogin的数据库版本:
项目名称: SessionLoginJNDI
实现步骤:
1 在students库中建立user表:
user,password两个字段即可
2 在server.xml配置Resource
3 在web.xml中引用Resource
4 将SessionLogin中的全部代码 copy到SessionLoginJNDI下
5 修改login_validate.jsp
使用jndi进行数据库访问验证,验证成功给予合法的session
6 修改admin.jsp可以显示student表中所有内容使用JNDI
12月1日
练习: JSP+JNDI+DAO
实现对Students库Student表的增、删、改、查
项目名称:
MyJSPStduentDAO
分析:
程序分为两个部分:
第一部分: DAO+Factory 纯Java
在 src 目录,以包的方式划分代码功能:
package com.student.db
DBConnection.java
package com.student.domain
Student.java
package com.student.dao
interface StudentDAO.java
StudentDAOImpl.java
StudentDAOFactory.java
package com.student.util
StudentUtil.java
第二部分: JSP Java+Html
用户访问、操作流程:
1. 登录模块(SessionLoginJNDI)
2. 学生管理模块
在WebContent目录:
login.jsp
login_validate.jsp
logout.jsp
admin/
index.jsp
browse.jsp
update.jsp //表单
update_do.jsp //使用DAO操作数据库
delete_do.jsp
insert.jsp
insert_do.jsp
StudentDAO 接口:
package com.student.dao;
import com.student.domain.Student;
public interface StudentDAO {
public Student createStudent(String name, int age, String sex,
String email, long phone);
public java.util.Collection queryStudent();
public Student findStudentById(int id);
public void deleteStudent(int id);
public void updateStudent(int id, String name, int age, String sex,
String email, long phone);
}
12月2日
目标: 编写一个学习笔记Web程序。
Project LearningNotes
需求:记录每日的学习笔记
技术:
1. 配置JNDI 数据源
2. 配置log4j 3. 使用DAO+Factory模式
功能模块:
1. 用户注册
2. 用户验证
3. 学习笔记的(增、删、改、查)
4. 权限判断(用户列表浏览学习笔记)