第一篇:java开发技术总结
数据库
oracle-->数据库管理系统-->SQL、PL/SQL-->Java(JDBC+SQL)DBA,数据库编程程序员 1.概念导论
1)什么是数据库
有组织和结构存储数据。可以存储 字符、字节、图形、图像等类型数据
DB(数据库):数据集合
DBMS(数据库管理系统):对数据集合进行管理和操作的软件
--Oracle
--DB2
--MySQL
--SQLSERVER
JDBC 1.什么是JDBC 全称Java DataBase Connection,Java数据库访问。
JDBC是Java访问数据库的一项技术
JDBC是SUN推出的Java访问数据库的一套标准。由一系列接口构成。
各个数据库厂商负责提供JDBC接口API的实现包。
开发者只需要掌握JDBC接口的使用,就可以实现对各种数据库的操作,不需要了解开发商的实现类。
XML
1、什么是xml(xtendsible markup language可扩 展的标记语言)? 1)定义
基于文本的通用的数据保存格式。
(1)通用的点的坐标
Point类
point对象(x=10,y=20)
a,序列化
b,数据库表
c,文件
...(2)数据格式
HTML 知识准备
1、分层:表现层:UI界面(DOS界面、桌面类型、web类型)
业务层:
数据层:文件、Oracle数据库
2、Web类型的应用程序----B/S 类型
打开 Browser,输入 URL,浏览器将请求发送到服务器
服务器得到请求,分析,返回响应
浏览器得到响应,解析(翻译),显示为页面
3、web 学习阶段
客户端技术:HTML+CSS+Javascript---Web 基础
服务器端技术:JSP、PHP、ASP.NET
4、web基础的课程
HTML:页面的创建
CSS:页面的外观
JavaScript:页面的动态效果和交互行为--3 一:HTML 概述
1、超文本标记语言:一种编写页面的纯文本的标记语言,文件以.html或者.htm 为后缀,依靠浏览器运行显示----解释性的语言
2、标记:一些用 <> 括起来的内容,特殊的显示
3、主流浏览器:IE/Firefox/Chrome/
4、浏览器兼容性:符合标准规范,具体问题
CSS 一:CSS 概述
1、CSS:级联样式表(层叠样式表)
2、特征:为页面定义外观的语言,实现内容和表现的分离,多个样式可以合为一个,如果冲突,以优先级为准
二:基础语法
1、语法:
属性名称:值;属性名称:值;比如--color:red;
2、如何应用
方式一(内联方式):<元素 style=“" />---将样式直接定义在元素的 style 属性里
方式二(内部样式表):在页面的 head 里的 style 里定义样式
方式三(外部样式表):定义一个单独的.css的文件(定义样式);然后,在页面的 head 里用 link 引入---推荐方式
3、外部样式表的优点:实现内容和表现的分离,提高代码的可重用性和可维护性
---可以准备多套样式---换皮肤/主题
4、样式表,如果重复定义
a、样式不同,取并集
b、相同,按照优先级
内联 > 内部或者外部
c、相同优先级下,以最后定义的为准
javascript 一:javascript 概述
1、什么是 javascript:一种基于对象和事件驱动的解释性脚本语言,嵌入到网页上
2、历史:js代码---W3C定义了标准规范的 js 代码
3、浏览器兼容问题:标准代码,个别情况个别对待
4、怎么写
方式一:直接写在事件里,仅限于代码很少
方式二:写在 head 的 script 里,仅限于当前页面重用
方式三:写在 js 文件里,html 页面的head 里用 script 引入
5、js的特征53………………………………………………..一种解释性的脚本语言,适用于为网页添加动态效果和交互行为
6、错误:
二:基础语法
1、写法:以 ;结束,大小写敏感
名
2、标识符:以字母、数字和下划线还有 $组成,不以数字开头---不能和系统关键字重
3、变量 ***----声明变量,以 var 开始
var i = 1;var s = ”mary“;var b = true;js是一种弱类型的语言---变量声明时不需要确定类型,数据类型以赋值为准
4、数据类型
简单类型:string、number、bool 特殊类型:null、undefined
var i;
alert(i);---undefined 复杂类型:对象
5、(string)字符串类型
var s = ”mary“;var s = 'mary';
特殊字符:使用转义---转换为普通字符,解决汉字的问题
”hello'w“ornld” alert(“一”);alert(“u4e00”);[u4e00-u9fa5]
6、number:并不区分整数和小数
var n = 12;var n1 = 12.34;
7、bool:true(1)和 false(0)
8、数据类型之间的转换
var n = 18;var name = “mary”;隐式转换(直接)
string + number--
number + bool--
bool + bool--
string + bool--
显式转换(调用方法)*** xxx.toString()parseInt(xxx);parseFloat(xxx);--确实能转,如果不能转,将返回 NaN
NaN---not a number 判断
isNaN(“aaa”)--is not a number--返回 bool
9、运算符
算术运算符、比较、逻辑、位。。
特殊一:***
=== 严格相等:值和类型
if(a == b)
if(a === b)servlet 1、web开发的背景知识(了解)b/s架构:
特点:
客户端使用浏览器,服务器端使用web服务器,客户端与服务器端使用标准化的http协议来进行通信。
优点:
与c/s架构相比,有两个优点:
a,客户端不需要单独安装
b,开发相对简单(因为c/s架构需要自定义协议,开发相应的 通信模块,而b/s使用标准化的http协议,浏览器与 web服务器都提供了相应的通信模块)。
2、什么是servlet? sun公司制订的一种用来扩展web服务器功能的组件规范。
(1)扩展web服务器功能
早期的web服务器(iis,apache ws等等),只能够处理静态
资源的请求(即需要事先将html文件写好并保存到web服务器
相应的文件夹下面),不能够处理动态资源的请求(即需要进行
计算,然后生成相应的html)。
a,可以使用cgi程序来扩展。
cgi程序可以使用c/c++,perl等语言来开发,但是,程序比较复杂,而且可移值性不好,性能也比较差,现在用得不多。
b,servlet可以扩展这些web服务器的功能。
浏览器发送请求给web服务器(apache ws),web服务器
检查请求是否需要计算,如果需要,web服务器会访问
servlet容器,servlet容器会调用servlet来进行计算。
(2)组件规范
1)什么是组件?
符合一定规范,实现部分功能,并且需要部署到
相应的容器里面才能运行的软件模块。
2)什么是容器?
符合一定规范,为组件提供运行环境及相应服务的 程序。
3、如何开发一个servlet? step1,先写一个java类,实现Servlet接口或者继承
HttpServlet类(一般会使用继承的方式)。
step2,编译
step3,打包(创建一个具有如下结构的文件夹)
appname(应用名称)
WEB-INF
classes(放.class文件)
lib(可选,放.jar文件)
web.xml(部署描述文件)step4,部署
将step3创建好的文件夹拷贝到servlet容器指定的 某个文件夹下面(比如,如果容器是tomcat,可以拷贝到
webapps文件夹下面)。
注意:也可以使用jar命令将step3创建好的文件夹
压缩成一个以“.war”为后缀的文件,然后拷贝。
step5,启动servlet容器,访问servlet
http://ip:port/appname/servlet-url
6、servlet是如何运行的? 比如,在浏览器地址栏输入
http://ip:port/web01/hello
step1,浏览器依据ip,port建立与servlet容器(容器同时 也是一个简单的web服务器)之间的连接。
step2,浏览器将请求数据打包(按照http协议,该数据包 也称为请求数据包)。
step3,浏览器发送请求数据包给容器。
step4,容器收到请求数据包之后,解析该数据包,并将
解析之后得到的数据封装到request(请求数据包)对象上,同时,容器 还要创建response对象。
step5,容器要依据请求资源路径(“/web01/hello”)找到 servlet的配置,然后创建servlet对象。
step6,容器调用servlet对象的service方法。容器会将事先 创建好的request,response作为参数传递给service方法。step7,在service方法里面,可以通过request对象获得
请求参数,并进行相应的处理,处理结果会放到response对象 里面。
step8,容器从response对象中取出处理结果,然后打包(按照http协议,该数据包称之为响应数据包)。然后将 响应数据包发送给浏览器。
step9,浏览器收到响应数据包之后,解析处理结果,然后生成 相应的页面。
http://localhost:8080/web01/hello?uname=jetty ?后是请求参数,其中uname是参数名,jetty是参数值。
JSP
1、什么是jsp(java server page java服务器端页面技术)? 1)定义
sun公司制订的一种服务器端动态页面生成技术规范。
2)理解
a,因为直接使用servlet,虽然也可以生成动态页面,但是比较繁琐(需要使用out.println语句),并且维护困难
(如果页面发生改变,必须修改java代码),所以,sun 在servlet规范制订之后,又添加了jsp规范。
b,jsp其实就是一个以“.jsp”为后缀的文本文件,该文件会被容器(比如tomcat)转换成一个servlet。
2、如何写一个jsp文件? step1,写一个以“.jsp”为后缀的文件。step2,在该文件里面,可以添加如下的内容:
1)html(css,javascript)
直接写即可(不用out.println)
2)java代码
a, java代码片断
<% java代码;
%>
b, jsp表达式
<%= java表达式 %>
3)指令
a,什么是指令?
告诉容器,在容器将.jsp文件转换成.java文件时
做一些额外的处理,比如导包。
b,基本语法
<%@指令名称 属性名称=属性值 %>
c,page指令
import属性:导包,比如
<%@page import=“java.util.*”%>
<%@page import=“java.util.*,java.text.*”%>
contentType属性:设置
response.setContentType的内容,比如
<%@page contentType=“text/html;charset=utf-8”%>
pageEncoding属性:告诉容器jsp文件的编码。
因为容器需要读jsp文件的内容(也就是
说,需要解码,某些容器,如果没有该
属性,默认情况下会按照iso-8859-1
去解码,会产生乱码问题)。
4)隐含对象
a,什么是隐含对象?
在jsp文件里面可以直接使用的对象,比如
out,request,response。
b,为什么可以直接使用这些隐含对象?
因为容器会自动添加创建这些对象的语句。
3、jsp是如何运行的? step1,容器要将.jsp文件转换成.java文件(其实就是
一个servlet类)。
a, html(css,javascript)--->
在service方法里,使用out.write输出。
(out.write方法会将null转换成“"输出)
b,<%
%>
----->
在service方法里,照搬。
c, <%=
%>
----->
在service方法里,使用out.print输出。
step2,容器调用servlet来处理请求。
4、转发
(1)什么是转发?
一个web组件(servlet/jsp)将未完成的处理通过
容器交给另外一个web组件继续完成。
最常见的情况:
一个servlet获得数据,然后转发给一个jsp来展现
这些数据。
(2)如何转发?
step1,绑订数据到request对象上。
request.setAttribute(String name,Object value);
说明:
name:绑订名称
value:绑订值 step2,获得转发器
RequestDispatcher rd =
request.getRequestDispatcher(String uri);
说明:
url : 转发的目的地 step3,转发
rd.forward(request,response);request对象的其它和绑订相关的方法: 依据绑订名称找到绑订值,如果找不到对应的值,返回null。
Object request.getAttribute(String name);
解除绑订
request.removeAttribute(String name)(3)转发的特点
a,转发之后,浏览器地址栏的地址不变。
b,转发的目的地必须是同一个应用内部某个
web组件的地址。
Ajax
1、ajax是什么?(asynchronous javascript and xml 异步的javascript 和xml)
ajax是一种用来改善用户体验的技术,其实质是
利用浏览器提供的一个特殊的对象(XMLHttpRequest 对象,一般称之为ajax对象)异步地(当ajax对象向
服务器发请求时,浏览器不会销毁当前页面,用户
仍然可以对当前页面做其它的操作)向服务器发送请求。服务器返回的数据不再是一个完整的新的页面,而是部分数据,利用这些数据,更新当前页面。整个
过程,页面无刷新,不打断用户的操作。
2、如何获得ajax对象?
XMLHttpRequest没有标准化,要区分浏览器。
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
} //非ie浏览器
xhr = new XMLHttpRequest();}else{ //ie浏览器
xhr = new ActiveXObject('MicroSoft.XMLHttp');} return xhr;
4、编程步骤
step1,获得ajax对象。
比如:
var xhr = getXhr();
step2,使用ajax对象发请求。
1)发送get请求
xhr.open('get', 'check_username.do?username=tom',true);xhr.onreadystatechange=f1;xhr.send(null);注意:
true:发送异步请求(ajax对象发请求时,浏览器不会销毁当前页面,用户仍然可以
做其它操作)。
false:发送同步请求(ajax对象发请求时,浏览器不会销毁当前页面,浏览器会锁定
当前页面,用户不能操作当前页面)。step3,编写服务器端的处理代码,一般不再需要返回
一个完整的页面,只需要返回部分数据。step4,编写事件处理函数
function f1(){
if(xhr.readyState == 4){
var txt = xhr.responseText;
更新当前页面
}
} jQuery
1、jQuery介绍 www.xiexiebang.com
(1)特点
利用选择器查找要操作的节点,并且会将这些节点
封装成一个jQuery对象。通过调用jQuery对象的属性
或者方法来实现对底层节点的操作,这样做的好处有
两个:一是兼容性更好了,另外,代码得到简化。
(2)编程步骤
step1,使用jQuery选择器查找要操作的节点。
step2,调用jQuery对象的方法或者属性。
(3)一个简单例子 first.html(4)jQuery对象与dom对象如何相互转换?
1)dom对象---> jQuery对象
$(dom对象)
2)jQuery对象---> dom对象
2、选择器
(1)选择器是什么?
jQuery借鉴了css选择器的语法,用来查找要操作的节点。
(2)基本选择器
selector / s1.html
#id
.class
element
select1,select2..selectn
*(3)层次选择器
selector / s2.html
select1 select2:查找所有的后代
select1>select2:只查找子节点
select1+select2:下一个兄弟
select1~select2:下面所有兄弟
(4)过滤选择器
1)基本过滤选择器
selector / s3.html
:first
:last
:not(select)排除满足select要求的节点 :even :odd :eq(index):gt(index):lt(index)2)内容过滤选择器
selector / s4.html :contains(text)匹配包含给定文本的元素
:empty 匹配所有不包含子元素或者文本的空元素
:has(select)匹配含有选择器所匹配的元素的元素
:parent 匹配含有子元素或者文本的元素 3)可见性过滤选择器 selector / s5.html :hidden 匹配所有不可见元素,或者type为hidden的元素
:visible 匹配所有的可见元素 4)属性过滤选择器 selector / s6.html [attribute] [attribute=value] [attribute!=value] 5)子元素过滤选择器
selector / s7.html :nth-child(index/even/odd)
注意: 下标从1开始。
6)表单对象属性过滤选择器 selector / s8.html
:enabled
:disabled
:checked
:selected(5)表单选择器
:input :text
:pasword :radio :checkbox :submit :image :reset :button :file :hidden
3、dom 1)查询
dom / d1.html
找到节点之后,可以读取或者修改节点的html内容,文本,值,属性。
a, html()读取或者修改节点的html内容
b, text()读取或者修改节点的文本内容
c, val()
读取或者修改节点的值
d, attr()读取或者修改节点的属性
2)创建
dom / d2.html
$(html);3)插入节点
append():作为最后一个孩子添加进来。
prepend():作为第一个孩子添加进来。
after():作为下一个兄弟
before():作为上一个兄弟 4)删除节点
dom / d3.html remove()remove(selector)empty():清空节点
5)数据与行为分离 dom / d4.html d5.html 即不用修改html文件,通过引入外部的js文件来 为页面提供动态效果。
$(fn);fn是一个函数的名称
或者
$(function(){
//当整个页面加载完毕,会执行这儿的代码。
});6)复制节点 dom / d6.html clone()clone(true):使复制的节点也具有行为(将事件
处理代码一块复制)7)属性操作
读取:attr('id');设置: attr('id','d1')或者一次
设置多个 attr({”id“:”d1“,”class“:”s1“});删除:removeAttr('id')8)样式操作 dom / d7.html 获取和设置: attr(”class“,”“)attr(”style“,”“)追加:addClass('')移除:removeClass('')
或者removeClass('s1 s2')
或者removeClass()//会删除所有样式
切换样式:toggleClass,有该样式,就删除,没有,就添加。
是否有某个样式 hasClass('')读取css('')设置css('','')或者
css({'':'','':''})//设置多个样式 9)遍历节点 dom / d8.html children()/children(select):只考虑子元素,不考虑其它后代元素。
next()/next(select):下一个兄弟
prev()/prev(select):上一个兄弟
siblings()/siblings(select):其它兄弟
find(select):从当前节点向下查找所有的后代
(满足select要求的)parent():父节点
struts
1、什么是Struts? Struts是基于MVC的轻量级框架,主要处理请求分发的问题,重心在控制层和表现层。
--基于MVC:实现了MVC,满足MVC的设计思想。
--轻量:侵入性低,是我们业务代码对框架的依赖程度很小,既很少需要import Struts包。
--框架:基础的代码,引入之后可以减少我们的开发工作量,提高开发效率。
2、为什么用Struts? 1)对比Servlet
--Servlet优缺点
优点:直接、效率高
缺点:业务代码耦合度高,不便于维护
--Struts优缺点
优点:将业务代码解藕,便于维护
缺点:效率低
--Servlet中的MVC与Struts中的MVC,参考图理解
2)对比其他框架
--健壮性(4*):稳定程度
--易用性(4*):好学、好用
--扩展性(5*):就软件未来而言,将来有更复杂的需求时,是否有处理方式。
--侵入性(4*):与依赖性/耦合度成正比
3、Struts发展史
1)Struts1,结构简单、易用,由Apache推出。
与Servlet/JSP耦合紧密,导致发展受限。
2)WebWork,技术先进,核心是XWork。
3)Struts2,基于XWork,在此基础上发展形成。
面试题:Struts1和Struts2的区别和联系?
--Struts2与Struts1差别很大,不能理解为Struts1
的升级版本。
--Struts2以XWork为核心,可以理解为WebWork
的升级版本。
*
4、Struts2使用步骤,HelloWorld--使用版本Struts2.1.8 1)创建web项目
2)导包
3)配置前端控制器(filter)
--在web.xml中配置filter
--控制请求分发的控制器
4)创建struts.xml--放在src根路径
--名称必须是struts.xml 5)*创建Action--控制业务流程的控制器 6)*创建JSP 7)*配置struts.xml--体现请求和Action的关系
--体现Action和JSP的关系
*
5、扩展HelloWorld 目标:掌握Action与JSP页面数据交换的方式。
1)Action如何向页面发送数据?
--通过EL表达式
2)*Action如何从页面接收数据?
--注入:调用JavaBean的set方法,为其属性赋值的行为称之为注入。
*a、基础属性注入
--Action中定义基本类型的属性,给它set方法
--表单中,文本框的name=”属性名“
--表单提交时,Struts2会自动将表单的内容,传递给Action里的属性。
--Struts2会自动初始化属性
--注意:Action跳转的页面,EL表达式${属性名}
*b、域模型注入
--Action中定义JavaBean类型的属性,给他set方法
--表单中,文本框的name=”对象名.属性名“
--表单提交时,Struts2会自动将表单的内容,传递给Action里定义的对象
--Struts2会自动的初始化对象
--注意:Action跳转的页面,EL表达式${对象名.属性名}
c、模型驱动注入(了解即可)
--需要Action实现接口ModelDriven
*
6、使用Struts2实现NetCTOSS中的资费列表
--准备:分析需求、了解表结构、建表
1)创建web项目
2)导包
3)前端控制器(filter)4)创建struts.xml 5)创建Action
-->filter->struts.xml->Action
-->DAO-->DBUtil,Entity a、Entity b、DBUtil c、DAO d、Action 6)JSP 7)配置struts.xml Hibernate
1、什么是Hibernate 1)Hibernate是数据访问层的框架,对JDBC进行了
封装,是针对数据访问层的面向对象的解决方案。
2)Hibernate允许我们直接访问对象,然后将访问
自动转化为SQL去执行,从而达到间接访问数据库
的目的,简化代码开发,提升开发效率。
2、为什么使用Hibernate 1)使用JDBC开发出现的问题
--需要在代码中写大量的SQL
--需要给大量的?赋值
--需要将结果集转换为实体对象
--在SQL中可能会写数据库特定的函数,移植性差。
2)使用Hibernate可以解决上面的问题
--基本上不需要写SQL,因为Hibernate可以
自动生成SQL并执行
--可以自动给?赋值
--可以自动将结果集转换为实体对象
--Hibernate提供通用的API来访问不同的数据库,移植性好。
3)补充JDBC与Hibernate的优缺点
a、JDBC优点:
效率高
b、Hibernate缺点:
效率相对于JDBC要低
*
3、Hibernate的设计原理
1)Hibernate是采用了ORM的思想,对JDBC进行的 封装。
2)ORM:Object Relation Mapping,即对象关系
映射,指的是Java对象和关系数据库的映射。
--之前使用JDBC开发时,需要知道数据库表和实体
对象的关系,以及字段和对象属性的关系,比如
需要知道COST表和Cost对象的关系。那么这种 关系我们之前是手动维护的,比如: cost.setName(rs.getString(”name“));ps.setString(2,cost.getName());--ORM思想是希望将这种关系的维护提炼出来,用一个公共的组件描述,那么在我们访问数据库
时,需要使用这种关系时,可以复用基于ORM 思想提炼出来的关系
--正是由于存在这样通用关系的描述,Hibernate 才可以让我们直接访问Java对象,从而通过
关系转换成SQL自动执行。
--Hibernate中将这种关系定义在XML配置文件中。
4、Hibernate体系结构
1)hibernate.cfg.xml
是Hibernate的主配置文件,用于配置数据库连接
参数,以及Hibernate框架参数。
2)实体类
是Java类型,用于封装表中的数据
3)xxx.hbm.xml
是关系映射文件,用于配置表与实体类的关系,以及表中字段与类中属性的关系。
4)Hibernate底层API
主要是用于解析主配置文件,以及关系映射文件,然后根据关系自动生成SQL并执行。
5、Hibernate常用API 1)Configuration
用于解析主配置文件的2)SessionFactory
用于创建Session的3)Session
是数据库连接会话,相当于是数据库连接。
注意:此Session和HttpSession没有任何关系。
4)Transaction
用于控制事务
5)Query
用于做特殊查询
*
6、Hibernate使用步骤
1)导包
2)引入主配置文件hibernate.cfg.xml 3)创建实体类Emp 4)*创建关系映射文件Emp.hbm.xml
--该配置文件必须和实体类同名
--该配置文件必须和实体类位于同一个包下
--在主配置文件中引入该关系映射文件
5)使用Hibernate的API,来进行增、删、改、查
Spring 1.什么是Spring,有什么作用
Spring框架属于一个解决方案框架 可以对其他技术和框架进行整合 应用。
*好处是:将程序中的各个组件和 框架技术进行解耦,便于日后系统 维护,升级和扩展操作。
在SSH中,会将Action,DAO组件都 交给Spring框架管理,由Spring 框架创建这些对象,建立这些对象 关联。
*2.Spring都含有哪些功能
--可以创建和管理程序组件对象
(相当于工厂的作用)--提供了IoC机制实现组件对象关系的解耦
--提供了AoP机制实现共通组件低耦合的调用。
(例如事务处理)--提供了对其他技术,例如JDBC,Hibernate,Struts等框架整合API--提供了一个Spring MVC框架实现
*3.Spring基本使用
1)创建和管理程序组件对象
--引入Spring IOC开发包
--在src下添加Spring配置文件
--将Bean组件定义到Spring配置
文件中
--(编码)实例化Spring容器对象
利用getBean获取Bean对象实例
*a.控制Bean对象创建模式
在使用时,可以在
scope=”singleton“表示单例模式(默认值)scope=”prototype“表示原型模式,每次调用getBean都返回一个新的 Bean对象。
b.控制Bean对象创建时机
scope=”singleton“时,Bean对象 是在容器实例化时创建。
在
scope=”prototype“时,Bean对象 是在getBean方法时创建。
c.追加初始化和销毁方法
在
同理destroy-method=”mydestroy“ 在容器销毁时,也释放单例的Bean 对象,此时会自动调用mydesctory 方法。(该属性仅适用于singleton 模式的Bean对象)
2)Spring的核心IoC容器
a.IoC概念
Inversion of Control 控制反转 或反向控制(控制转移)
2004 Martin fowler提出的IoC思想.IoC思想:两个组件之间调用(例如A调用B)原有方式是A负责创建B对象;现在变成了 B对象由第三方框架或容器负责实例化,然后给A对象注入。即A对象获取B对象的 方式发生了反转。
IoC技术方案有两种:依赖注入和依赖查找 Spring采用依赖注入技术实现IoC控制。依赖技术主要以下两种方式:--set方式注入(推荐)在A中定义setB(B b),接收传进来的B对象--构造方式注入 在A中定义构造方法 public A(B b){}
DI:Dependency Injection依赖注入
b.IoC使用方法
--编写Action,定义到Spring配置中
--编写DAO,定义到Spring配置中
--在Action中定义DAO接口类型变量和
setter方法
--在Action的
配置
ref=”要注入的Bean对象id值">
第二篇:Java Web 开发技术实验报告模版
项目综合实践报告 题目:html+css 旅游门户网站设计
班级:计算机2010(1)姓名:丁一学号:954211完成日期:2011.9.14
一、分析设计
用文字、图表等说明设计思路及设计结果。
二、主要源代码
Html
Css
三、效果图
屏幕抓图
四、调试过程
(调试过程中碰到的问题及解决方法)
五、实验结论
1、实验结果图
2、实验心得体会
第三篇:Java反射技术总结
Java反射技术知识点总结
1、反射:
反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。
2、Java语言的反射机制主要提供以下功能:
在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个类所具有的成员变量和方法 生成动态代理
3、在java.lang.reflect包当中提供了实现反射机制的类:
Class类:代表一个类。
Field类:代表类的成员变量,也称为类的属性。Method类:代表类的方法。Constructor类:代表类的构造方法。
Array类:该类提供动态地生成和访问java数组的方法。
4、Class实例: Class类和其它的类一样继承自Object类,Class对象包含了与类相关的信息。
事实上,Class对象就是用来创建类的所有的“普通”对象的。类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并且编译了一个新类时,就会产生一个Class对象(恰当地说,该对象被保存在一个同名的.class文件中)。在运行时,当我们想生成这个类的对象时,运行这个程序的java虚拟机(JVM)首先检查这个类的Class对象是否已经加载。如果尚未加载,JVM就会根据类名查找.class文件,并将其载入。
一旦某个类的Class对象被载入内存,它就被用来创建这个类的所有对象。这些对象都会对应于同一个Class对象。
要想使用反射,首先需要获得待处理类或对象所对应的Class实例。获取Class实例的四种方式: 第一种:调用类本身的.class属性。Class c =String.class;第二种:调用对象的getClass()方法获取该对象的Class实例。
String str = “abc”;Class c = str.getClass();第三种:使用Class类的静态方法forName(),用类的全名(包名.类名)来获取一个Class实例。
Class.forName(“java.lang.String”);
第四种:对于基本数据类型的封装类,可以采用.TYPE来获取相对应的基本数据类型的Class实例。
Class intClass = Integer.TYPE
5、Class类的其它方法: Object newInstance()
使用Class对象生成该类的新实例。它调用了缺省(无参数)的类构造方法创建一个新的对象。所以使用newInstance()方法创建的类必须有一个无参数的构造方法。
boolean isInstance()该方法提供了一种动态地调用instanceof运算符的途径。Class[] getInterfaces()该方法返回Class对象的数组,这些对象代表的是某个Class对象所包含的接口 Class getSuperclass()该方法获取该Class对象的直接基类。这个方法自然也是返回一个Class引用,所以可以进一步查询其基类。这意味着在运行时,可以找到某个对象的完整类层次结构。
6、获得类的构造方法可以调用Class类对象的以下方法:
Constructor getConstructor(Class[] params):获得类的指定参数类型的公共构造方法。Constructor[] getConstructors():获得类的所有公共构造方法。
Constructor getDeclaredConstructor(Class[] params):获得类的指定参数类型的构造方法(与访问级别无关)。
Constructor[] getDeclaredConstructors():获得类的所有构造方法(与访问级别无关)
7、获得类的成员变量可以调用Class类对象的以下方法:
Field getField(String name):获得指定的公共字段(属性)Field[ ] getFields():获得类的所有公共字段(属性)Field getDeclaredField(String name):获得类声明的指定的字段(与访问级别无关)Field[ ] getDeclaredFields():获得类声明的所有字段
8、获得类的成员方法可以调用Class类对象的以下方法:
Method getMethod(String name, Class[ ] params):获取包含指定的参数类型及名称的公共方法 Method[ ] getMethods():获得类的所有公共方法
Method getDeclaredMethod(String name, Class[ ] params):获取包含指定的参数类型及名称的类声明的方法 Method[ ] getDeclaredMethods():获得类声明的所有方法
9、使用反射来动态的调用类的方法,需要使用java.lang.reflect.Method中的:Object invoke(Object obj, Object[ ] args)方法
obj :指需要调用的那个方法的隐式参数,也即那个方法所属的对象,如果调用的是一个静态方法将第一个参数指定为null。
args :指需要调用的那个方法的显式参数,因为一个方法可以有很多个参数所以在这里我们必须要用一个数组来存放这些参数,在存放时需要把值类型的参数转换成相应的包装类型存放进去。
10、使用反射来动态的改变成员变量
调用Class的getField()并指定field名称,获得特定的Field对象之后便可直接调用Field的get()和set()方法来改变成员变量了
第四篇:JAVA开发个人简历
个 人 简 历
个人信息
姓名:xxxxxxx性别:x
电话:187-xxx7-xxxx年龄:22
邮箱: lxxxxxxx@xxx.com专业:软件技术应聘职位
Java软件开发工程师
专业技能
熟练掌握CoreJava编程,具有扎实的编程功底和良好的编码习惯
熟练掌握ssh(Struts2+hibernate+Spring)等轻量级框架
熟悉MVC开发模式
熟练使用Eclipse/MyEclipse工具进行Java软件开发
熟练Unix/Linux环境下Java的应用软件开发
熟练掌握MySQL、Oracle等数据库操作,能编写常用SQL语句
熟悉软件开发的主要流程,可以根据指定要求快速完成设计、编码等工作了解xml、HTML、JavaScript、Ajax技术
项目经验
一、通用电子商务平台(当当网购物系统)
开发环境:Linux
开发工具:MyEclipse8.6,Tomcat,MySQL
技术实现:Struts2+Hibernate+Spring+JavaScript+JSP+AJAX
项目描述:此系统为网上购物系统,用户可以用过该系统实现网上购物、注册、登录、浏览商
品、订货、生成订单功能。也包括对普通商品增删改查功能和购物车内书的数量的增删改功能。
责任描述:独自完成项目的整个开发过程
用户模块包括登录与注册,主要使用了AJAX对其输入的信息进行验证,结合Hibernate存储和验证用户登录等。
商品列表模块主要是用List集合来展示商品。
购物车模块则是使用Session技术来保存购物车,通过Struts2调用不通方法来操作购物车中的商品集合,实现对购物车的增删改查。
订单模块主要是用Hibernate对用户所买商品的记录进行存储。
经验总结:这个项目让我们把我们所学习的三大框架以及JS,Ajax等都联系起来。尤其是使用
Hibernate经常出现异常,在和组内成员讨论中逐步解决问题,并且更加完善代码。
通过这个项目不仅提高我个人能力,而且还促进了与他人合作的能力。
二、教学管理系统
开发环境:Linux
开发工具:MyEclipse8.6,Tomcat,MySQL
技术实现:Struts2+JavaScript+JDBC+AJAX
项目描述:项目实现了管理员对教师信息的增删改查和对学生选课的管理
责任描述:独立完成该项目的设计和实现,主要应用MVC模式的设计思想对项目进行划分。
采用JDBC对教师信息进行增删改查,在学生选课模块,使用到了Ajax来对选课进
行检验。
经验总结: 通过该项目让我对MVC设计模式有了更深一步的认识。在数据的存储方面尤其是
对JDBC对数据存储的乱码问题。通过与组内成员的不懈努力将其克服。极大的锻
炼了自己团队合作能力,项目计划能力以及写文档的能力独立解决问题的能力。
三、其它项目:BBS论坛,交友网等
实习经历
2011/12 — 2012/05北京xxx科技Java工程师实习生
教育背景
2010/09―2012/07开封大学软件技术
所获证书
C+ E国际软件工程师Java培训证书
自我评价
专业技能:虽然在大学里,我学习的是软件技术专业,已经具备了一些专业方面的基础知识。但是想在行业中有更好的发展就必须学习更多与企业应用相关的知识,所以我选择来达内进行培训。在学习期间,我踏实勤奋,按时完成课后练习及作业,不断的积累代码量,同时也能帮同学解决一些力所能及的问题。遇到难题能够主动动手查阅资料,解决问题。通过项目实战提高我的个人能力和团队协作能力。
综合能力:性格比较沉稳,为人诚恳,不怕吃苦,有高度的责任心和团队合作精神。对环境的适应能力强,有较强的团队意识和集体荣誉感,做事情比较认真仔细,对每一件事情都能认真对待,能很好的自我调节。乐于学习新的知识与技术。
第五篇:java开发面试题
1、编写程序
题目:古典问题:有一对公母猪,从出生后第3个月起每个月都生一对猪,小猪长到第三个月后每个月又生一对猪,假如猪都不死,问每个月的猪总数为多少?
答案:
public class lianxi01 {
public static void main(String[] args){
System.out.println(“第1个月的兔子对数: 1”);
System.out.println(“第2个月的兔子对数:1”);
int f1 = 1, f2 = 1, f, M=24;
for(int i=3;i<=M;i++){
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println(“第” + i +“个月的兔子对数: ”+f2);
}
}
}
2、是非题
2.1 Java程序中的起始类名称必须与存放该类的文件名相同。()
答案:正确
2.2 原生类中的数据类型均可任意转换。()
答案:错误
3、问答题
3.1 try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
答案:
会执行,在return前执行。
3.2 sleep()和 wait()有什么区别:
答案:
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会 释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4、数据库题
聚集函数的应用
编写一条sql语句,希望从艺术家表artist_tab中,看到只有一个专长specialty的是哪些专长
答案:seelctspecialty from artist_tab group by specialty having count(*)=1’;