本文仅为新手想学习javaWeb的提供一些参考,有不足或错误之处可以修改或添加,另希望以后学习者可以同样将自己的心得发来和大家分享。。。谢谢
1 前台:html,css,javascript 这是最基本的三种技术html是网页上的基本标签格式,css则是指层叠样式表 (Cascading Style Sheets)用来修饰html的相当于一件衣服,javascript则是浏览器的脚本语言用来控制静态页面的动态效果。同时javascript还有一个轻量级的类库jquery,
而我们常说的Ajax则是七种技术的综合体用来实现网页的部分刷新,即实现我们常说的异步交换。
2 后台:我们需要服务器帮我们处理数据,由于服务器别人已经写好了,所以我们只需要遵守相应的规范就能让服务器帮我们工作了,而实现这座桥梁的规范就是Servlet,我们通过Servlet就能将数据发送或展现给用户了,但是由于Servlet写界面太麻烦了,于是sun推出了JSP,你可以在它上面直接写html和CSS,然后由服务器翻译为相应的Servlet再由服务器执行将数据发送给浏览器从而实现了动态网页的效果。。于是我们就引出了一些问题,就是有时我们需要保存客户的数据怎么办呢?这就产生了专门保存数据的数据库。但数据库也有很多啊!难道我们要学习每个数据库么?答案当然是否定的了,于是我们只要遵守相应的规范就行了,于是就有了大家常写的模板jdbc了。然后我们再说说JSP页面吧我们有时写JSP页面时也有可能需要一些的逻辑啊!我们怎么办呢?以前是直接在上面写java脚本就解决了即<%%>的形式但是后来人们发现这样程序写大了后维护起来相当不方便,于是产生了EL表达式替代它,但EL只是获取数据啊!涉及逻辑它又熄火了啊,这时就引出了自定义标签来解决它了。
至于框架技术暂且不谈本人也只是算了解。不谈了,以后再说吧
相关些许概念(此刻恰巧忙碌着论文,复制粘贴一下 ,方便以后复习查看吧)
JSP(全称JavaServer Pages)和Servlet技术一样,JSP也是SUN公司(现已被Oracle公司收购)倡导、很多公司参与共同建立的一种动态网页技术标准,也是sun定义的一种开发动态web资源的技术,属于JavaEE技术之一。JSP实际上就是Servlet,它们在一起又称JSP/Servlet规范。JSP:HTML+Java。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。它是在传统的网页HTML文件(*.htm,*.html)中加入Java程序段(Scriptlet)和JSP标签(Tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,既能在Linux中运行,也能在其他操作系统中运行。
JSP与Serverlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。WEB服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP由HTML代码和嵌入其中的Java代码组成。服务器在页面被客户端请求后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的基础,大型Web应用程序的开发需要Java Servlet和JSP配合完成。JSP具备了Java技术简单实用、完全面向对象、具有平台无关性、安全可靠、主要面向Internet等特点。
Servlet技术简介:
在网上浏览网页是需要一个Web服务器,浏览网页的过程就是浏览器通过HTTP与Web服务器交互的过程。过去大多是静态网页,因此只须把资源放在web服务器即可。随着应用的开发,客户与服务器需要动态的交互,为了实现这一目标,就需要开发一个遵循HTTP的服务应用软件,用来处理各种请求。Servlet是一个基于Java技术的Web组件,运行在服务器端,用户利用Servlet可以很轻松地扩展Web服务器的功能,使其满足特定的应用需要。Servlet由Servlet容器(Servlet引擎),是Servlet的运行环境,为发送的请求和响应提供网络服务。例如,Tomcat就是一个常用的Servlet容器。接收客户端并作出响应的步骤如下:
1.客户端访问Web服务器,发送HTTP请求
2.Web服务器接收到请求后,传递给Servlet容器
3.Servlet容器加载Servlet,产生Servlet实例,并向其传递表示请求和响应的对象
4.Servlet得到客户端的请求信息,并进行相应的处理
5.Servlet实例把处理结果发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器
1.5.2 JavaScript技术
JavaScript是基于对象和事件驱动的客户端脚本语言。有如下特点:
- 交互性
- 安全性(不可以直接访问本地硬盘)
- 跨平台性(只要是可以解析js的浏览器都可以执行,和平台无关)
1、JavaScript和Java不同! ①所属:NetScape和Sun ②基于对象和面向对象 ③JS可以直接解析执行,Java需先编译在运行 ④JavaScript是一种弱类型的语言,Java是强类型的语言。
2、JavaScript的实现包括以下3个部分:
1)核心(ECMAScript):描述了JS的语法和基本对象。
2)文档对象模型 ☆(DOM):处理网页内容的方法和接口
3)浏览器对象模型(BOM):与浏览器交互的方法和接口
JavaScript和Java无关,JavaScript 是属于网络的脚本语言!那么为什么名字如此相似?这是典型的市场营销方面的成功,它的推广成功,也是借了Java的东风。当微软开始意识到JavaScript在Web开发人员中流行起来时,微软还是一贯风格,建立了自己的脚本语言,JScript。
JavaScript可以使网页更具交互性,给用户提供更令人兴奋的体验,当用户在页面间导航时向他们提供反馈。例如他可以设置鼠标悬停效果,在客户端验证表单,创建定制的HTML页面,显示警告框,设置cookie等等。
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。它最初由网景公司(Netscape)的Brendan Eich设计,是一种动态、弱类型、基于原型的语言,内置支持类。
1.5.3 SQL介绍
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。 由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL关系型数据库于1998年1月发行第一个版本。是一个小型关系型数据库管理系统,开发者是瑞典MYSQLAB公司,该公司在08年被Sun收购,Sun又在09年被Oracle收购。它是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库里,这样就提高了速度和灵活性。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。
1.5.3 jdbc介绍
JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API。是J2SE的一部分,由java.sql,javax.sql包组成。JDBC是一种用于执行SQL的JAVA API,它是一组访问数据库的API集合,通过加载数据库厂商所提供的驱动程序,可以与数据库建立连接。这样,用户就不用为访问不同的数据库而编写不同的程序了,只需要用JDBC API编写一个程序即可,而且JDBC技术对开发者屏蔽了一些细节,这样程序员就不需要它关心它的底层的实现技术。另外,与java一样,jdbc对数据库的访问也具有平台无关性。
JDBC访问数据库的步骤如下:
1):注册并加载驱动程序。驱动程序是数据厂商提供的一个对外接口,用来分辨所访问的是哪种数据库。Class.forName(“com.mysql.jdbc.Driver”);//加载驱动程序
2)创建连接。数据库连接是使用DriverManager对象的静态方法getConnection()建立的
String username="root";
String password="123456";
Connection conn = null;
conn = DriverManager.getConnection(url,username,password);//建立连接
3)创建SQL语句对象,用来执行sql语句,当建立连接以后,便可以由Statement对象将SQL语句发送给DBMS.对于select语句,可使用executeQuery(),对于创建或修改表的语句,使用executeUpdate()
Statement stmt = null;
ResultSet rs = null;
stmt = conn.createStatement();//创建执行sql语句,
stmt.execute("insert into Employee values(1,'hubin','22')");
rs =stmt.executeQuery("select * from Employee");
4)显示结果。当执行查询语句时,SQL语句的执行结果存储在ResultSet对象中,可以使用GETXXXX方法来检索数据
while(rs.next()){
System.out.println(rs.getInt(1)+" "+ rs.getString(2)+" " +rs.getInt(3));//处理执行结果
}
5)关闭连接。数据库连接需要消耗系统资源,一旦不需要使用时,就应该释放出来。这是程序员必须养成的良好习惯。在关闭连接时,正确的顺序是:Result、Statement、Connection;为了确保所有连接能够关闭,应该把关闭语句写在finally块中,这样不管操作数据库过程中是否发生异常,都能够把资源释放出来。连接其他数据库步骤均相同,只需要更改驱动程序即可。
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(conn !=null) conn.close();
1.5.3 数据源和连接池介绍
发1)DataSource用来取代DriverManager来获取Connection
2)通过Datasource获得Connection速度很快
3)通过Datasource获得的Connection都是已经被包裹过的(不是驱动原来的连接),它的close方法已经被修改
4)一般的DataSource内部会用一个连接池来缓存Connection,这样可以大幅度提高数据库的访问速度
5)连接池可以理解成一个能够存放Connection的Connection
6)我们的程序只和DataSource打交道,不会直接访问连接池
DBUtils框架简介:
commons-dbutils-1.4.jar是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的方法都是静态的类
QueryRunner:itcast-tools-1.4/cn/itcast/jdbc/TxQueryRunner该类简化了SQL查询,他与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。两个构造方法:@1.默认的构造方法@2.需要一个javax.sql.DataSource来做参数的构造方法
主要方法:
public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException: 几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException : 执行一个不需要置换参数的查询操作。
public int update(Connection conn, String sql, Object[] params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。
public int update(Connection conn, String sql) throws SQLException:用来执行一个不需要置换参数的更新操作。
1.5.4 动态代理
pers.hoobey.estore.factory/OrderServiceFactory.java&ProductServiceFactory.java
在程序运行时,运用反射机制动态创建而成,主要有一个Proxy类和一个InvocationHandler接口,动态代理角色:@1.抽象了主体角色@2.真实主题角色(实现了抽象主题接口)@3.动态代理主题角色(实现了InvocationHandler接口,并实现invoke方法)
public Object invoke(Object proxy, Method method,
Object[] args){实现了代理对象调用方法时希望执行的动作}动判断是否有注解,得到注解上的注册对象,得到权限名称,得到用户,如果为空,则抛出权限不足异常,用来判断登录用户的身份从而实现不同的操作。