- 浏览: 1589930 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
说明:
使用 spring2.5 +ibatis2.3.4+oscache2.4+struts2+oracle
建表
applicationContext.xml
SqlMapConfig.xml
Student.xml
Student.java
IStudentDAO.java
IStudentDAOImpl.java
IStudentServiceImpl.java
Test.java
struts.xml
BaseAction.java
StudentAction.java
index.jsp
使用 spring2.5 +ibatis2.3.4+oscache2.4+struts2+oracle
建表
create table STUDENT ( SID NUMBER(8) primary key not null, SNAME VARCHAR2(20) not null, MAJOR VARCHAR2(100), BIRTH DATE, SCORE NUMBER(6,2) ) -- Create sequence create sequence STUDENT_SEQ minvalue 1 maxvalue 999999999999999999999999999 start with 21 increment by 1 cache 20;
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 采用c3p0数据源 这个是在企业中用的比较多的一个数据源 --> <!-- destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbcUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/> <property name="user" value="luob"/> <property name="password" value="luob"/> <!-- 连接池中的最大连接数 --> <property name="maxPoolSize" value="150"/> <!-- 连接池中的最小连接数 --> <property name="minPoolSize" value="1"></property> <!-- 初始化连接池中的 连接数,取值 在 minPoolSize 和 maxPoolSize 之间,default:3--> <property name="initialPoolSize" value="3"/> <!-- 最大空闲时间,60s内该连接没有被使用则被丢弃,若为0 永不丢弃.default:0 --> <property name="maxIdleTime" value="60"/> <!-- 当连接数不够时,每次同时创建多少个连接 --> <property name="acquireIncrement" value="1"/> <!-- 每60s检查连接池中的所有空间连接,如果没有被使用,就被放弃, default:0 --> <property name="idleConnectionTestPeriod" value="60"/> </bean> <!-- 从c3p0数据源中抽取出JDBC的代理对象--> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor" lazy-init="true" /> <!--9i: org.springframework.jdbc.support.lob.OracleLobHandler --> <!--10g以后:org.springframework.jdbc.support.lob.DefaultLobHandler(mysql,DB2等都可以用这个) --> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <!-- 9i: 指定操作lob类型数据的jdbc代理对象 如果上面的 lobHandler 换了下面的就不需要了 --> <property name="nativeJdbcExtractor"> <ref local="nativeJdbcExtractor" /> </property> </bean> <!--==================================================== --> <!-- ////让spring来管理batis 的SqlMapClient对象 //////////--> <!--==================================================== --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="lobHandler" ref="lobHandler"/> <property name="configLocation"><value>classpath:SqlMapConfig.xml</value></property> </bean> <!--=============================== --> <!-- //// batis事务代理配置 /////////--> <!--=============================== --> <!-- 使用jdbc 来管理事务 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 定义DAO bean的事务代理--> <bean id="templatesDAO" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean "> <!-- 为事务代理bean注入事务管理器--> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <!-- 设置事务属性--> <property name="transactionAttributes"> <props> <!-- 所有以add开头的方法,采用required的事务策略,并且只读--> <prop key="add*">PROPAGATION_REQUIRED</prop> <!-- 所有以mod开头的方法,采用required的事务策略,并且只读--> <prop key="mod*">PROPAGATION_REQUIRED</prop> <!-- 所有以del开头的方法,采用required的事务策略,并且只读--> <prop key="del*">PROPAGATION_REQUIRED</prop> <!-- 其他方法,采用required的事务策略 --> <prop key="*">readOnly</prop> </props> </property> <!-- 为事务代理bean设置目标bean --> <property name="target"> <!-- 采用嵌套bean配置目标bean--> <bean class="test.dao.impl.TaoTemplatesDAOImpl"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> </property> </bean> <!-- =============================== --> <!-- ///////// dao 的配置 /////--> <!-- =============================== --> <bean id="studentDAO" class="com.ibatis.student.IStudentDAOImpl"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> <!-- =============================== --> <!-- ///// Serivce 的配置 /////--> <!-- =============================== --> <bean id="studentService" class="com.ibatis.student.IStudentServiceImpl"> <property name="studentDAO" ref="studentDAO"/> </bean> </beans>
SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!-- 使用spring之后,数据源的配置移植到了spring上,所以IBATIS本身的配置可以取消 --> <!-- 对 ibatis 的设置 --> <settings maxRequests="256" maxSessions="64" maxTransactions="16" enhancementEnabled="true" lazyLoadingEnabled="true" useStatementNamespaces="false" /> <!-- List the SQL Map XML files. They can be loaded from the classpath, as they are here (com.domain.data...) --> <sqlMap resource="com/ibatis/student/Student.xml"/> <!-- List more here... <sqlMap resource="com/mydomain/data/Order.xml"/> <sqlMap resource="com/mydomain/data/Documents.xml"/> --> </sqlMapConfig>
Student.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="studentSqlMap"> <!-- 别名 就像java中 import packageName --> <typeAlias alias="Student" type="com.ibatis.student.Student"/> <!-- 使用 OSCACHE 缓存机制 --> <cacheModel id="student-cache" type="OSCACHE"> <flushInterval hours="24" /> <flushOnExecute statement="queryAllStudent" /> <property name="size" value="1000" /> </cacheModel> <select id="queryAllStudent" resultClass="Student"> select * from student </select> <select id="queryStudentById" parameterClass="int" resultClass="Student"> select * from student where sid=#sid# </select> <!-- 这个里面的 占位符 就不能乱写了 因为会调用 Student 的 getSid ...getSname() .. --> <insert id="addStudent" parameterClass="Student"> insert into student(sid,sname,major,birth,score) values (#sid#,#sname#,#major#,#birth#,#score#) </insert> <!-- #sid# 这个 只是一个占位符 可以更改的 --> <delete id="deleteStudentById" parameterClass="int"> delete from student where sid=#sid# </delete> <update id="updateStudent" parameterClass="Student"> update student set sname=#sname#, major=#major#, birth=#birth#, score=#score# where sid=#sid# </update> <!-- 如果参数 要拼接成一个表达式 就要将# 换成 $ --> <select id="queryStudentByName" parameterClass="String" resultClass="Student"> select sid,sname,major,birth,score from student where sname like '$sname$' </select> <!-- Student 不区分大小写的 --> <insert id="insertStudentBySequence" parameterClass="Student"> <selectKey resultClass="int" keyProperty="sid"> select STUDENT_SEQ.nextVal from dual </selectKey> insert into student(sid,sname,major,birth,score) values (#sid#,#sname#,#major#,#birth#,#score#) </insert> </sqlMap>
Student.java
package com.ibatis.student; import java.util.Date; public class Student { private int sid; private String sname; private String major; private Date birth; private float score; public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } @Override public String toString() { // TODO Auto-generated method stub String content = "sid:" + sid + "\tsname:" + sname + "\tmajor:" + major + "\tbirth:" + birth + "\tscore=" + score; return content; } }
IStudentDAO.java
package com.ibatis.student; import java.util.List; public interface IStudentDAO { public void addStudent(Student student); //使用自动增长 主键 public void addStudentBySequence(Student student); public void delStudentById(int id); public void updStudentById(Student student); public List<Student> queryAllStudent(); //使用模糊查询 public List<Student> queryStudentByName(String name); public Student queryStudentById(int id); }
IStudentDAOImpl.java
package com.ibatis.student; import java.io.IOException; import java.io.Reader; import java.sql.Date; import java.sql.SQLException; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ibatis.sqlmap.client.SqlMapClient; public class IStudentDAOImpl extends SqlMapClientDaoSupport implements IStudentDAO { //private static SqlMapClient sqlMapClient=null; /*static{ try { Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader("SqlMapConfig.xml"); sqlMapClient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); }catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ public void addStudent(Student student) { // TODO Auto-generated method stub student=(Student)getSqlMapClientTemplate().insert("addStudent", student); System.out.println(student.getSid()); } public void addStudentBySequence(Student student) { // TODO Auto-generated method stub getSqlMapClientTemplate().insert("insertStudentBySequence", student); } public void delStudentById(int id) { // TODO Auto-generated method stub try { int rows=getSqlMapClientTemplate().delete("deleteStudentById", id); System.out.println(rows); } catch (DataAccessException e) { e.printStackTrace(); } } public List<Student> queryAllStudent() { // TODO Auto-generated method stub List<Student> studentList=null; try { studentList=getSqlMapClientTemplate().queryForList("queryAllStudent"); } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return studentList; } public Student queryStudentById(int id) { Student student=null; try { student=(Student)getSqlMapClientTemplate().queryForObject("queryStudentById",id); } catch (Exception e) { e.printStackTrace(); } return student; } public List<Student> queryStudentByName(String name) { // TODO Auto-generated method stub List<Student> studentList=null; try { studentList=getSqlMapClientTemplate().queryForList("queryStudentByName", name); } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return studentList; } public void updStudentById(Student student) { // TODO Auto-generated method stub try { int rows=getSqlMapClientTemplate().update("updateStudent", student); } catch (DataAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
IStudentServiceImpl.java
package com.ibatis.student; import java.util.List; public class IStudentServiceImpl implements IStudentService { private IStudentDAO studentDAO; public void setStudentDAO(IStudentDAO studentDAO) { this.studentDAO = studentDAO; } public void addStudent(Student student) { // TODO Auto-generated method stub studentDAO.addStudent(student); } public void addStudentBySequence(Student student) { // TODO Auto-generated method stub studentDAO.addStudentBySequence(student); } public void delStudentById(int id) { // TODO Auto-generated method stub studentDAO.delStudentById(id); } public List<Student> queryAllStudent() { // TODO Auto-generated method stub return studentDAO.queryAllStudent(); } public Student queryStudentById(int id) { // TODO Auto-generated method stub return studentDAO.queryStudentById(id); } public List<Student> queryStudentByName(String name) { // TODO Auto-generated method stub return studentDAO.queryStudentByName(name); } public void updStudentById(Student student) { // TODO Auto-generated method stub studentDAO.updStudentById(student); } }
Test.java
package com.ibatis.student; import java.sql.Date; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String [] args){ ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); IStudentService studentService=(IStudentService)context.getBean("studentService"); //1. for (Student student : studentService.queryAllStudent()) { System.out.println(student); } //2. // System.out.println(dao.queryStudentById(1)); //3. // Student student=new Student(); // student.setSid(5); // student.setSname("admin"); // student.setScore(100); // student.setMajor("Games"); // student.setBirth(Date.valueOf("2008-08-08")); // // dao.addStudent(student); //4. // dao.delStudentById(1); //5. // Student student=new Student(); // student.setSid(2); // student.setSname("luob"); // student.setScore(50); // student.setMajor("Games"); // student.setBirth(Date.valueOf("2008-08-08")); // dao.updStudentById(student); //6. // for (Student student : dao.queryStudentByName("l%")) { // System.out.println(student); // } //7. /*Student student=new Student(); student.setSid(2); student.setSname("SCOTT"); student.setScore(50); student.setMajor("paly Games"); student.setBirth(Date.valueOf("2008-08-08")); studentService.addStudentBySequence(student); System.out.println("success");*/ } }
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="student" namespace="/student" extends="struts-default"> <action name="userLogin" class="com.ibatis.student.action.StudentAction" method="login"> <result name="success">/index.jsp</result> </action> </package> </struts>
BaseAction.java
package com.ibatis.student.common; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.SessionAware; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport{ public Object getServiceBean(String beanId){ ServletContext sc=ServletActionContext.getServletContext(); WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(sc); return ctx.getBean(beanId); } public HttpServletRequest getRequest(){ return ServletActionContext.getRequest(); } public HttpServletResponse getResponse(){ return ServletActionContext.getResponse(); } public Map<String, Object> getSession() { ActionContext act=ActionContext.getContext(); return act.getSession(); } }
StudentAction.java
package com.ibatis.student.common; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.SessionAware; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport{ public Object getServiceBean(String beanId){ ServletContext sc=ServletActionContext.getServletContext(); WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(sc); return ctx.getBean(beanId); } public HttpServletRequest getRequest(){ return ServletActionContext.getRequest(); } public HttpServletResponse getResponse(){ return ServletActionContext.getResponse(); } public Map<String, Object> getSession() { ActionContext act=ActionContext.getContext(); return act.getSession(); } }
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Ibatis + Spring + Struts2 </title> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="${pageContext.request.contextPath}/student/userLogin.action" method="post"> 用户名:<input type="text" name="userName"/> 密码:<input type="password" name="password"/> <input type="submit" value="提交"/> </form> ${sesssion_msg} ${request_msg} </body> </html>
评论
3 楼
chenzheng8975
2012-11-14
applicationContext.xml 文件没有配置完啊。。。。。
2 楼
hellostory
2012-11-14
推荐使用Mybatis
1 楼
shmily2038
2012-11-14
有待改进的地方,如
1、dao层封装一个通用的;
2、分页的封装
做的都是简单的增删改查,而实际业务都是比较复杂的。
1、dao层封装一个通用的;
2、分页的封装
做的都是简单的增删改查,而实际业务都是比较复杂的。
发表评论
-
常见ETL工具一览
2017-08-08 11:05 2582ETL(Extract-Transform-Load的 ... -
spring-session 中的坑
2017-07-06 15:34 9995spring-session 配置 依赖 gradle ... -
Spring AspectJ Aop Annotation
2017-03-29 17:08 709import org.aspectj.lang.Proce ... -
Oralce 随手笔记(二)
2014-11-03 08:58 2060151 查询当前用户自己有多少张表 user_tabl ... -
Oracle 随手笔记(一)
2014-11-02 02:01 1486--author: luobin --data: 201 ... -
Oracle 触发器
2014-11-02 01:54 1325---before 触发器 在 dml 操作之后-- ... -
Oralce 开发包 和 游标
2014-11-02 01:53 1491--_________________________ ... -
Oralce 存储过程 和 函数
2014-11-02 01:49 1035--___________ ... -
Oracle 顺序控制,异常处理,动态sql
2014-11-02 01:45 1812-----------------顺序控制-------- ... -
Oracle 流程控制 和 循环控制
2014-10-30 20:31 732--_______________________ ... -
Oracle 索引 和 PL/SQL
2014-10-30 20:30 1665--____________________ ... -
Oracle 序列 和 视图
2014-10-30 20:27 880-------------------- ... -
Oralce DDL,DML,DQL,DCL,TCL
2014-10-30 20:22 1070--Oracle --day:2010-4-8 ... -
spring 第13天 使用@scheduled注解执行定时任务
2015-01-06 23:11 54085我们使用spring的注解 @Scheduled 执行定时任务 ... -
Spring 第12天,事务传播属性和 隔离级别
2014-09-28 00:36 8161 事务的传播属性(Propagation) 1) REQ ... -
spring 第11天 quartz任务调度
2014-08-24 13:59 1146Quartz是一个强大的企业级任务调度框架,Spring中继承 ... -
spring 第10 天 AOP 面向切面
2014-08-21 00:08 1753AOP(Aspect Orient Programming ... -
spring 第9天 Resurce 资源访问
2014-08-17 22:20 1868Spring Resource接口 spring提供的Reso ... -
spring 第8天 Spring 注解
2014-08-17 15:33 1472spring注解 @Component:标注一个普通的sp ... -
spring 第7天 Bean,BeanFactory处理器,配置器
2014-08-16 21:46 1238spring 两种后处理器 第一种,Bean 后处理器 对容器 ...
相关推荐
Spring+Struts2+iBatis是一个经典的Java轻量级开发框架组合,主要用于构建Web应用程序。这三个框架协同工作,提供了一种高效、灵活的解决方案,帮助开发者实现MVC(Model-View-Controller)架构。 首先,Spring框架...
耗时3天,对Struts2+Ibatis+Spring3.0+JreeChart进行了完整整合 包括Spring3.0的事务配置 OSCache二级缓存的配置 log4j实现输出Sql到控制台 JfreeChart与Struts2,Spring3.0的整合 对一个简单的表实现查询,批量删除...
osCache可以被集成到各种Java应用中,包括Web应用,如Struts2、Spring和iBatis。下面将详细解释这些框架与osCache的结合使用及其相关知识点: 1. **Struts2与osCache**: - 在Struts2中,osCache可以用于缓存...
【SSH】指的是Struts2、Hibernate和Spring这三个Java企业级应用中的主流开源框架。它们各自在Web开发中承担着不同的职责,共同构建了一个强大的后端架构。 **Struts2**是一个基于MVC(Model-View-Controller)设计...
第1章 iBATIS的理念 2 1.1 一个结合了所有优秀思想的混合型解决方案 2 1.1.1 探索iBATIS的根源 3 1.1.2 理解iBATIS的优势 7 1.2 iBATIS适合应用在何处 10 1.2.1 业务对象模型 11 1.2.2 表现层 11 1.2.3 业务逻辑层 ...
spring-dao.jar spring-hibernate3.jar spring-ibatis.jar spring-jdbc.jar spring-jdo.jar spring-jpa.jar spring-portlet.jar spring-struts.jar spring-tomcat-weaver.jar spring-toplink.jar spring-web.jar ...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
* 熟悉使用 Springboot、Spring、Struts2、Hibernate、ibatis、mybatis 和 Springmvc 整合开发。 * 熟悉使用 EasyUI、bootstrap 等前端 RIA 富客户端框架。 * 熟悉使用 Highchart、Echarts 技术统计图表。 * 熟悉...
SSH整合:SSH是Struts2、Spring和Hibernate三个框架整合的统称。 SpringMVC整合:SpringMVC与Spring和Hibernate的整合。 Hibernate中get和load的区别:get是立即加载,load是延迟加载。 Hibernate、Ibatis、Jdbc...
Struts2 和 Spring MVC 是两种广泛使用的MVC(Model-View-Controller)框架,用于处理Web应用的业务逻辑。Struts2提供了一系列拦截器和插件,方便扩展。Spring MVC则是Spring框架的一部分,结合了IoC/DI特性,使得...
##### SpringMVC、struts1和struts2区别 - **SpringMVC**:轻量级框架,与Spring无缝集成。 - **Struts1**:较早的MVC框架,使用ActionForm。 - **Struts2**:基于拦截器的设计模式。 ##### Struts2中result中的...
- **框架熟练使用**:包括SpringBoot、Spring、Struts2、Hibernate、iBatis、MyBatis和SpringMVC,这些是Java Web开发中常见的框架。 - **分布式框架**:熟悉Dubbo+zookeeper,用于构建分布式服务,以及Shiro安全...
它包含了诸如 Hibernate、ibatis、Struts、Spring、DBUnit、Ant、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit 和 JSTL 等组件。这些工具和框架被精心集成到一起,以便为开发者提供一套完整的开发解决...
- Struts2:基于MVC的框架,整合了许多其他技术如OGNL和拦截器。 - Spring MVC:Spring框架的一部分,提供了强大的MVC支持。 - Tapestry:强调类型安全和组件重用。 - Wicket:基于组件的Web框架,注重开发者...
##### 2. 简答题 **抽象类与接口的区别:** - **抽象类**: - 可以包含抽象方法(没有实现的方法)和具体方法。 - 可以拥有构造器、状态变量等。 - 支持继承层次结构,一个类只能继承一个抽象类。 - 可用于...
文中提到的是将`log4j-1.2.8.jar`文件加入到项目的`lib`目录下,这样就可以在项目中使用Log4j的功能了。 **步骤2:创建并配置`log4j.properties`文件** 接下来,需要在项目的类路径(`CLASSPATH`)下创建一个名为`...
##### Struts2中result中的type类型 - **dispatcher**:将请求转发给指定页面。 - **chain**:执行另一个action。 - **redirect**:客户端重定向到指定URL。 - **redirectAction**:服务器端重定向到另一个action。...
2. **配置stdout Appender**:`log4j.appender.stdout=org.apache.log4j.ConsoleAppender` 表明此Appender类型为`ConsoleAppender`,即将日志信息输出到控制台。接着配置其输出格式为`[QC]%p[%t]%C.%M(%L)|%m%n`。 3...