- 浏览: 199669 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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、页面使用过哪些标签
相关推荐
【安卓2020面试题总结】 在Android开发领域,面试是评估候选人技能和技术理解的重要环节。2020年的面试题集锦涵盖了各种核心概念和技术,这些知识点对于准备面试或者提升自身Android开发能力非常有帮助。以下是部分...
这份"C++面试题总结.zip"文件显然是为准备C++职位面试者精心编排的资料集合,它涵盖了从基础到高级的诸多主题,旨在帮助程序员提升自己的技能,顺利通过大厂的选拔。下面我们将深入探讨其中可能涉及的知识点。 首先...
【Dubbo面试题总结】 1. **Dubbo与Zookeeper的关系和故障处理** - 在Dubbo中,Zookeeper作为注册中心,它主要用于存储服务提供者的元数据信息。如果Zookeeper集群都挂掉,消费者已经从Zookeeper拉取了服务提供者的...
Spring Boot 面试题总结 本文对 Spring Boot 面试题进行了总结,涵盖了 Spring Boot 设计的配置文件格式、核心注解、开启 Spring Boot 特性、运行 Spring Boot 的方式、读取配置的方式、监视器、自动配置的原理、...
阿里java后台开发面试题总结
这份"C++一些面试题总结.zip"文件显然是为准备C++面试或提升C++技能的程序员精心准备的资料集。它涵盖了从基础到高级的各种知识点,旨在帮助开发者在面对大厂面试时能够得心应手。 一、C++面试常问题 C++面试通常会...
VUE常见面试题总结篇 Vue.js 是一个前端JavaScript框架,用于构建用户界面和单页应用程序。以下是 Vue.js 面试题的总结: 1. Vue.js 的优点有哪些? 答案:Vue.js 的优点有轻量级框架、简单易学、双向数据绑定、...
"前端面试题总结" 以下是根据给定文件信息生成的相关知识点: 浏览器兼容性 在前端开发中,浏览器兼容性是一个非常重要的问题。不同的浏览器对 HTML、CSS、JavaScript 的解析和执行方式不同,这导致了同一个页面...
mysql面试题总结如下,欢迎大家留言交流
在Java面试中,面试官通常会考察应聘者的语法基础、数据结构与算法、多线程、集合框架、异常处理、IO流、网络编程、设计模式等多个方面的能力。以下是对这些关键知识点的详细阐述: 1. **Java语法基础**:Java的...
面试题总结.xmind
这份"java面试题总结资料"应该包含了作者精心整理的各类常见问题和解答,旨在帮助求职者更好地准备面试。 首先,让我们来看看Java基础部分。这部分通常会涉及变量、数据类型、运算符、流程控制语句、类与对象、封装...
这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...
Python面试题总结知识点: 1. 单例模式的实现方法: Python中实现单例模式主要有两种方式。第一种是利用装饰器(decorator),创建一个全局的字典用于存储类的实例,并通过装饰器返回这个实例。如果在字典中不存在类...
本文将详细探讨Java面试中常遇到的知识点,包括Java的基础、与其他语言的比较、JVM的工作原理、Java的不同平台版本,以及JDK和JRE的区别。 首先,JavaSE(Java Platform, Standard Edition)是Java的基础,它提供了...
前端面试题总结 在本节中,我们将总结前端面试题的知识点,涵盖 HTML、浏览器内核、JS 引擎、语义化、Doctype、H5、HTML5 新特性、Websocket 等方面。 一、浏览器内核 浏览器内核主要分成两部分:渲染引擎和 JS ...
mysql面试题总结文本格式
前端面试题总结 本文档总结了最近三年面试的经验,涵盖了从 Angular1 到 Angular2、Vue 等前端技术栈的知识点。除了框架之外,还涵盖了基础知识,包括 HTML、CSS、CSS3、一些前端的数据结构和高级 JavaScript 编程...
【标题】:“蚂蚁面试题总结.doc” 【主要内容分析】: 面试题目涵盖了Java编程语言和Java虚拟机(JVM)在不同版本之间的变化,以及中间件的设计理念。以下是这些知识点的详细解析: 1. **JDK1.7到JDK1.8 Map的...