- 浏览: 196780 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- Linux (14)
- html (4)
- Lucene (2)
- WebService (4)
- oracle (7)
- spring (2)
- eclipse (15)
- AIX (2)
- windows (3)
- android (1)
- Java基础 (15)
- Struts (7)
- Java面向对象 (2)
- Java Web (1)
- Apache (2)
- Web容器 (12)
- Google (2)
- javascript (32)
- 爬虫 (2)
- MySQL (4)
- C#开发 (3)
- Hibernate (3)
- 面试题 (2)
- Birt报表 (2)
- Flex (1)
- UML (2)
- 非技术 (3)
- Mercurial(hg) (1)
- css (2)
- SVN (1)
- Mac (1)
- ORM框架 (1)
- 测试技术 (2)
- 浏览器兼容 (5)
最新评论
-
xiebo1983:
http://www.sqkoo.com/show/detai ...
完美解决MySQL中文乱码 -
hzy888:
楼主,你好,你说的问题,我自己写例子测试,没有你说的效果,两个 ...
onblur和onclick冲突 -
ahack:
onblur 谢谢。
onblur和onclick冲突 -
lkf009:
an_it_eye_2012 写道降下来了,怎么再升上去呢,需 ...
Windows IE8降为IE6 -
haohao-xuexi02:
貌似这个方法不错啊
Windows IE8降为IE6
1、struts1和struts2的区别,两者配置文件的区别,运行原理
struts1和struts2的区别
1).在Action实现类的对比:Struts1要求Action类继承一个抽象基类;Struts2的Action类可以实现一个Action接口,也可以实现其他接口,增加了可扩展性。Struts2提供了一个ActionSupport基类去实现常用的接口,也就是Action接口可实现,可不实现
2).Servlet依赖的对比:Struts1 的Action依赖于Servlet API,因为execute方法中有HttpServletRequest和HttpServletRospose,Struts2不依赖Servlet API
3).封装请求参数对比:Struts1使用ActionForm对象封装用户的请求参数,ActionForm必须继承一个ActionForm基类,普通的JavaBean不能作为ActionForm 。 而Struts2可以直接使用Action的属性来封装用户请求参数,同时Struts2也提供了ModelDriven模式,可以使用Model对象来封装用户请求,但是该Model无需继承任何Struts2基类
4).表达式语言:Struts1能使用JSTL,Struts2除了可以使用JSTL,还可以使用OGNL(Object Graph Notation Language)
5).绑定值到视图的对比:Struts1使用了标准的JSP机制把对象绑定到视图页面;Struts2使用了“ValueStack”值栈的技术,使标签库能够访问值,而不用把对象和视图绑定在一起
6).数据校验对比:Struts1 可以在ActionForm中重写validate方法,也能通过Commons的validate框架。Struts2也可以重写validate方法,同时还可以用Xwork框架
struts1和struts2配置文件的区别
1).Struts1配置文件是struts-config.xml,根标签也是struts-config,而Struts2的配置文件是struts.xml根标签是struts,web.xml中Struts1的配置是使用的servlet的配置方式
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>10load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2).Struts1需要配Formbean实现数据映射传输,使用ActionMapping的方式将对象和视图映射起来。Struts2使用的值栈技术, 使标签库能够访问值。web.xml中Struts2的配置使用拦截器FilterDispatcher。
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
运行原理
Struts1:
1).客户端发送请求(Http Request),被struts1的核心控件器ActionServlet接收,并根据配置决定是否进行表单验证,如果需要则调用ActionForm的validate方法
2).表单验证成功,ActionServlet根据struts-config.xml里的ActionMapping 映射关系找到对应的Action,若找不到就返回500错误到JSP页面;若有,则调用Action里的 excute()方法
3).Action里的 excute()方法返回一个ActionForward对象,ActionServlet把用户请求转发给ActionForwar对象指向的jsp组件
4).jsp组件生成动态的页面
Struts2:
1).户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2).经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)
3).FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5 ActionProxy通过Configuration Manager访问框架的配置文件,找到需要调用的Action类
6 ActionProxy创建一个ActionInvocation的实例。
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2
框架中继承的标签。在这个过程中需要涉及到ActionMapper
2、web.xml配置struts和spring的代码还有hibernate
Struts1:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>10load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
Struts2:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Spring:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Hibernate:可以通过Spring整合
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
3、spring的ioc特征,spring的aop是怎么配置和实现的
IOC(Inversion
of Control)就控制反转,意味着将你设计的类交给系统去控制,而不是在类的内部控制 ,说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
DI(Dependency
Injection,依赖注入):说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
AOP的配置如下: ApplicationContext.xml
<!--[if !supportLists]-->1. <!--[endif]--><aop:config>
<!--[if !supportLists]-->2. <!--[endif]--> <aop:aspect id="TestAspect" ref="aspectBean">
<!--[if !supportLists]-->3. <!--[endif]--> <!--配置com.spring.service包下所有类或接口的所有方法-->
<!--[if !supportLists]-->4. <!--[endif]--> <aop:pointcut id="businessService"
<!--[if !supportLists]-->5. <!--[endif]--> expression="execution(* com.spring.service.*.*(..))" />
<!--[if !supportLists]-->6. <!--[endif]--> <aop:before pointcut-ref="businessService" method="doBefore"/>
<!--[if !supportLists]-->7. <!--[endif]--> <aop:after pointcut-ref="businessService" method="doAfter"/>
<!--[if !supportLists]-->8. <!--[endif]--> <aop:around pointcut-ref="businessService" method="doAround"/>
<!--[if !supportLists]-->9. <!--[endif]--> <aop:after-throwing pointcut-ref="businessService" method="doThrowing" throwing="ex"/>
<!--[if !supportLists]-->10. <!--[endif]--> </aop:aspect>
<!--[if !supportLists]-->11. <!--[endif]--> </aop:config>
<!--[if !supportLists]-->12. <!--[endif]-->
<!--[if !supportLists]-->13. <!--[endif]--> <bean id="aspectBean" class="com.spring.aop.TestAspect" />
<!--[if !supportLists]-->14. <!--[endif]--> <bean id="aService" class="com.spring.service.AServiceImpl"></bean>
<!--[if !supportLists]-->15. <!--[endif]--> <bean id="bService" class="com.spring.service.BServiceImpl"></bean>
4、xml解析
四种方式:SAX、DOM、JDOM、DOM4J
SAX:
SAX处理机制:SAX是一种基于事件驱动的API。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。
DOM:
DOM中的核心概念就是节点。DOM在分析XML文档时,将将组成XML文档的各个部分(元素、属性、文本、注释、处理指令等)映射为一个对象(节点)。在内存中,这些节点形成一课文档树。整棵树是一个节点,树中的每一个节点也是一棵树(子树),可以说,DOM就是对这棵树的一个对象描述,我们通过访问树中的节点来存取XML文档的内容。
PS:属性节点是附属于元素的,不能被看做是元素的子节点,更不能作为一个单独的节点
JDOM:
JDOM利用了java语言的优秀特性,极大地简化了对XML文档的处理,相比DOM简单易用。JDOM也使用对象树来表示XML文档,JDOM使用SAXj解析器来分析XML文档,构建JDOM树。然而JOMD本身并没有提供解析器,它使用其他开发商提供的标准SAX解析器,JDOM默认通过JAXP来选择解析器,可以通过手动知道解析器的类名来设置。
首先要在工程中添加jdom的jar包,这里使用jdom1.0.jar。(见附件)
DOM4J:
dom4j与JDOM一样,也是一种用于解析XML文档的开放源代码的XML框架,dom4j也应用于java平台,dom4j API使用了java集合框架并完全支持DOM、SAX和JAXP。与JDOM不同的是,dom4j使用接口和抽象类,虽然dom4j的API相对复杂些,但它提供了比JDOM更好的灵活性。dom4j也使用SAX解析器来分析XML文档,创建dom4j树。此外dom4j也可以接收DOM格式的内容,并提供了从dom4j树到SAX事件流或W3C DOM树的输出机制。与JDOM不同,dom4j自带了一个SAX解析器Aelfred2,如果没有显示的设置SAX解析器,也没有通过系统属性org.xml.sax.driver设置解析器,dom3j将会使用JAXP来加载JAXP配置的解析器,如果创建解析器失败,那么最后才使用dom4j自带的Aelfred2解析器。
同样,首先要在工程中添加dom4j的jar包,这里使用dom4j-1.6.1.jar。(见附件)
5、oracle登陆命令、导出命令以及其他常用命令
conn scott/tiger@db_tom; 登陆
select t.table_name from user_tables t; 查看用户下的表
“exp scott/tiger@db_tom file=D:\exp_fulldb_yyyymmdd.dmp
log=D:\exp_fulldb_yyyymmdd.log”
“scott/tiger”表示企业总机数据库用户名/密码,@db_tom表示配置的数据库实例名称,“file=D:\exp_fulldb_yyyymmdd.dmp”表示备份文件所存放的路径和名称,“log=D:\exp_fulldb_yyyymmdd.log”表示日志文件存放的路径和名称。具体详细信息请输入“exp -help”查看。 导出数据库
6、webservice实现方法,axis和?他们实现是遵循的什么协议?soap是什么?wsdl是什么?服务端是怎么运行的
Webservice:Axis与Xfire
协议:HTTP-GET、HTTP-POST、SOAP(Simple Object Access Protocol)简单对象访问协议
WSDL:(Web Services Description Language)Web服务描述语言.
7、oracle游标的使用
显式游标
当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句。PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时隐式游标自动关闭。显式游标在PL/SQL块的声明部分声明,在执行部分或异常处理部分打开,取数据,关闭。
使用游标
这里要做一个声明,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标。要在程序中使用游标,必须首先声明游标。
CURSOR CR_EMP IS SELECT empno,ename,salary FROM emp WHERE salary>2000;
CURSOR CR_EMP(p_salary int) IS
SELECT empno,ename,salary
FROM emp
WHERE salary> p_salary;
OPEN CR_EMP(2000);
FETCH CR_EMP
INTO v_empno, v_ename, v_salary;
WHILE CR_EMP%FOUND LOOP
v_empnos := v_empnos || v_empno || '-';
v_enames := v_enames || v_ename || '-';
v_salarys := v_salarys || v_salary || '-';
FETCH CR_EMP
INTO v_empno, v_ename, v_salary;
END LOOP;
CLOSE CR_EMP;
程序连接池:
dbcp方式的jndi连接池
c3p0 连接池,
proxool连接池,
服务连接池:
配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:
<Resource name="jdbc/oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url=" jdbc:oracle:thin:@host:port:databse"
username=" user "
password="password"
maxActive="100"
maxIdle="30"
maxWait="10000" />
配置你的应用下的web.xml中的之间加入
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
把连接数据库的第三方驱动放到common/lib下面就ok了
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
9、hibernate使用配置,对orm框架的理解
<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式-->
<?xml version='1.0'
encoding='gb2312'?>
<!--表明解析本XML文件的DTD文档位置,DTD是Document
Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在Hibernate3.1.3软件包中的src/org/hibernate目录中找到此文件-->
<!DOCTYPE
hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--声明Hibernate配置文件的开始-->
<hibernate-configuration>
<!--表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作-->
<session-factory>
<!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序-->
<property
name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,
hibernate是数据库名-->
<property
name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</hibernate>
<!--连接数据库是用户名-->
<property
name="hibernate.connection.username">root</property>
<!--连接数据库是密码-->
<property name="hibernate.connection.password">123456</property>
<!--数据库连接池的大小-->
<property
name="hibernate.connection.pool.size">20</property>
<!--是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率-->
<property
name="hibernate.show_sql">true</property>
<!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->
<property
name="jdbc.fetch_size">50</property>
<!--jdbc.batch_size是指Hibernate批量插入,删除和更新时每次操作的记录数。Batch Size越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大-->
<property
name="jdbc.batch_size">23</property>
<!--jdbc.use_scrollable_resultset是否允许Hibernate用JDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助-->
<property
name="jdbc.use_scrollable_resultset">false</property>
<!--connection.useUnicode连接数据库时是否使用Unicode编码-->
<property name="Connection.useUnicode">true</property>
<!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全-->
<property
name="connection.characterEncoding">gbk</property>
<!--hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!--指定映射文件为“hibernate/ch1/UserInfo.hbm.xml”-->
<mapping resource="org/mxg/UserInfo.hbm.xml">
</session-factory>
</hibernate-configuration>
10、linux、unix常用命令,比如查看硬盘,cpu等的
查看硬盘:df(disk free)
查看CPU:cat /proc/cpuinfo 显示CPU info的信息
11、页面使用过哪些标签
相关推荐
阿里java后台开发面试题总结
机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----...
《2019年BATJ大厂面试题总结》是一份综合性的Java互联网核心资料,主要针对准备在大型互联网公司(如百度、阿里巴巴、腾讯、京东等,简称BATJ)求职的开发者。这份资料旨在帮助求职者掌握必备的Java基础知识和架构...
面试题总结是一个长期工作,面试不停,这份面试题总结就不会停。以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,...
【大厂面试题总结】JavaSE面试题总结详细教程: 目录: 递归算法之输出某个目录下所有文件和子目录列表 泛型中extends和super的区别 内部类的理解 深入理解Java的反射机制 深入理解Java异常体系 谈谈NIO的理解 谈一...
这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...
这份"java面试题总结资料"应该包含了作者精心整理的各类常见问题和解答,旨在帮助求职者更好地准备面试。 首先,让我们来看看Java基础部分。这部分通常会涉及变量、数据类型、运算符、流程控制语句、类与对象、封装...
"分布式面试题总结" 本资源总结了分布式面试题的知识点,涵盖了分布式系统的基础概念、集群、分布式、SOA、微服务的概念及区别、CAP 理论、BASE 理论、数据一致性模型等。 一、分布式系统基础概念 分布式系统是指...
以下是对"android常见面试题总结"的详尽解析,涵盖了核心概念、系统架构、UI设计、性能优化等多个方面。 一、Android基础知识 Android是一个开源的操作系统,基于Linux内核,主要用于移动设备。面试中常问的基础...
2022护网面试题总结
Unity3d 面试题总结 Unity3d 作为一个功能强大且广泛应用的游戏引擎,在面试中,常常会被问到一些基础知识和高频问题。本文总结了一些 Unity3d 高频面试题目,涵盖了渲染管道、内存优化、协同程序、插件、碰撞器、...
【华为Java面试题总结】 在Java开发者的眼中,华为无疑是中国IT行业的巨头,其面试流程严谨,技术要求高。这份“华为Java面试题总结”旨在为准备进入华为的Java工程师提供一些关键知识点的梳理和复习指导。以下是对...
"前端面试题总结" 以下是根据给定文件信息生成的相关知识点: 浏览器兼容性 在前端开发中,浏览器兼容性是一个非常重要的问题。不同的浏览器对 HTML、CSS、JavaScript 的解析和执行方式不同,这导致了同一个页面...
"百度面试题总结"这个资料包很可能包含了百度在招聘过程中对C++程序员的考察点,帮助应聘者更好地准备面试。 C++的基础知识点包括: 1. **基本语法**:C++的基础始于了解变量、数据类型、运算符、流程控制(如if...
C语言面试题总结,内容很详细,而且还有答案,很好的面试资料!
面试题总结.xmind
根据给定文件的信息,我们可以将其中涉及的知识点归纳总结如下: ### 一、项目经验 - **面试官关注点**:面试者对于自己所参与项目的理解程度,包括项目的背景、功能、技术...希望以上总结能够帮助你更好地准备面试。
【大厂面试题总结】JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。 JavaSE面试题总结详细教程: 目录: 递归算法之输出某个目录下所有文件和子目录列表 泛型中extends和super的区别 内部类的理解...
在面试题总结实用.pdf文件中,提出了实现atoi()函数的问题,这是C++标准库函数用于字符串转整数的函数,但标准库函数的使用通常不作为面试的重点,面试官更倾向于考核应聘者能否自行实现这一功能。 在提供的答案中...
Linux驱动面试题总结涉及的知识点 Linux操作系统是当今世界上使用最广泛的开源操作系统之一,它在服务器、嵌入式设备和个人计算机等多个领域都有广泛的应用。Linux驱动程序的开发是操作系统领域的核心技术之一,...