- 浏览: 52598 次
- 性别:
- 来自: 北京
最新评论
文章列表
struts1的工作流程
1. 读取配置(容器启动时一次性加载)
容器读取web.xml,自动加载设置为自动启动的ActionServlet; 读取struts-config.xml配置信息
2.发送请求
客户端发送http请求,容器收到后通过web.xml上的URL通配符(一般是*.do)找到ActionServlet;
3.填充数据
ActionServlet(Action配置path,唯一标识)从ActionConfig对象查找Action类,如果没有找到则转发给JSP或静态页面,如果有找到Action类和对应ActionForm类(Action配置name,FormBean ...
ArrayList和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入数据,都允许直接按序号索引元素,
但是插入数据要涉及到数组元素移动等内容操作,所以索引数据快插入数据慢。
Vector由于使用了syn ...
- 2012-02-03 21:37
- 浏览 765
- 评论(0)
java中的数据类型有两种
一种是基本类型(primitive types)共有8种即byte short int long float double char boolean(并没有String类型)
看下面一段程序:
int a = 413;
int b = 413;
System.out.println(a==b); //true
Integer c = 10;
Integer d = 10;
System.out.printl ...
- 2012-02-03 20:47
- 浏览 684
- 评论(0)
servlet有良好的生存期的定义:包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,
当服务器决定将实例销毁的时候调用其destroy方法。
web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。
通过调用service ()方法实现,根 ...
MVC模式是一种近年来使用比较广泛的为许多IT厂家和开发者所认可的一种设计模式,它和Web应用程序并没有直接的关系(事实上,它在很多非WEB应用程序中得到了使用),它不仅使得系统层次分明、职责清晰,而且使得系统更易 ...
做登录的时候我们经常用如下两行代码:
<input type="text" name="username" size="20"/>
<input type="password" name="password" size="20"/>
可是在不同的浏览器下,显示的长度却是不同的,在IE8下密码框就比用户名框稍微短了一点。
解决办法就是为其设置样式 style="width:150px"
如下: ...
先来点文字性的描述:
MVC对于我们来说,已经不陌生了,它起源于20世纪80年代针对smalltalk语言的一种软件设计模式,现在已被广泛应用。近年来,随着java的盛行,MVC的低耦合性、高重用性、可维护性、软件工程的可管理性等诸多优点使其在java平台中很受欢迎,其间,也诞生了许多优秀的MVC框架,如专注于控制层的Struts、WebWork, Struts2, JSF等框架,专注于业务逻辑方面的Spring框架、专注于持久层的Hibernate、iBatis、Castor、JORM等框架。由于最近用了一次SSI框架,因此本文主要是对Strtus2、Spring、iBatis三个开 ...
- 2012-01-04 15:51
- 浏览 1795
- 评论(0)
1,整合Struts2
a)导入struts的jar包
struts2-core-2.1.6.jar xwork-2.1.2.jar ognl-2.6.11.jar freemarker-2.3.13.jar commons-logging-1.1.jar commons-fileupload-1.2.1.jar
b)将struts.xml文件拷贝到src目录下
c)在web.xml里配置struts的核心过滤器
<filter>
<filter-name>struts2</filter-name>
<filte ...
xml方式和Annotation方式差不多,只需改动代理类,和配置文件即可。
package aspect;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import o ...
- 2012-01-02 22:48
- 浏览 689
- 评论(0)
业务接口
package dao;
public interface UserDao {
public void addUser();
}
接口实现
package dao;
public class UserDaoImpl implements UserDao {
@Override
public void addUser() {
// TODO Auto-generated method stub
System.out.println("添加用户");
}
}
代理类
package aspect;
im ...
在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。
其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。
Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现
业务接口
package com.itmyhome.manager;
public interface UserManager {
public void addUser(); //增加用户
public boolean delUser(int id); ...
- 2012-01-02 15:05
- 浏览 657
- 评论(0)
定义两个bean分别为Bean1和Bean2
Bean1.java
package com.itmyhome.bean;
public class Bean1 {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAg ...
- 2012-01-01 23:09
- 浏览 829
- 评论(0)
Hibernate缓存是一种提高系统性能的比较好的工具,如果使用合理,则能极大地提高系统性能,但如果使用不合理
也会使系统性能下降。Hibernate缓存比较复杂,要想灵活使用hibernate缓存,必须深入研究Hibernate缓存原理。
Session缓存(一级缓存):当调用Session的保存、更新、查询操作时,在Session缓存中不存在相应对象,则把这些
对象加入Session缓存。同一个Session操作,第一次通过ID调用load()或get()查询持久对象,先从Session缓存中
查询,随即发送一条SQL语句生成一个持久对象并把该对象放入Session缓存。第二次再通过 ...
- 2012-01-01 15:05
- 浏览 873
- 评论(0)
Hibernate Lazy采用CGLIB,可以对类进行代理,用在:
one-to-one,many-to-one: 取false,proxy/noproxy
Hibernate lazy概念:只有真正使用对象时,才会创建,对于Hibernate来说,只有真正使用时才会发出sql.
测试:one-to-one
Card.java
package com.po;
public class Card {
private int id;
private String cardNo;
public int getId() {
return id;
}
publi ...
- 2012-01-01 01:33
- 浏览 730
- 评论(0)
一个Student对应一个Classes,一个Classes包含多个Student;
<hibernate-mapping>
<class name="com.po.Classes" table="classes">
<id name="id" type="integer">
<generator class="native" />
</id>
<pr ...
- 2011-12-31 21:18
- 浏览 681
- 评论(0)