- 浏览: 286497 次
- 性别:
- 来自: 湖南
-
最新评论
-
iceman1952:
Hi 你觉得很好的那两三篇 百度文库的链接,能贴一下吗?
内网穿透&UDP打洞 -
ice86rain:
里面貌似没有用到Lucene
Struts2+Hibernate3.2+Spring2.5+Compass整合 -
sgq0085:
写得非常详细 好文章
JMS之ActiveMQ Linux下安装与应用实例 -
強顔歓笶:
JMS之ActiveMQ Linux下安装与应用实例 -
yixiandave:
forcer521 写道不指定所有子目录都在一起的话,这样用源 ...
linux下nginx稳定版1.6.2安装
文章列表
struts2是通过filter来初始化配置的,struts1 是通过servlet 加载配置的
action名称的搜索路径,按包的顺序从里往外搜
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method , 默认执行action中的execute()方法 。
3>如果没有为result指定name属性 , 默认为success 。
视图类型
1. 重定向的类型:dispatch(默认值),redirect(客户端跳转),redirectAction,plainText
2 . 在action中的参数可 ...
为什么struts2的action是线程安全的,struts1的action不是线程安全的?
先对struts1和struts2的原理做一个简单的讲解
对于struts1 ,当第一次**.do的请求过来时,在内存中的actionmapping中找到相对应的action,然后new出这个action放在缓存中,当第二次一样的请求过来时,还是找的这个action,所以对于struts1来说,action是单实例的 ,只有一个,如果在action中定义变量,就要非常小心了,因为并发问题,可能带来灾难性的后果,也不是不可以,我们可以加锁达到同步,只是在性能上就要折衷了。
另外说几句 ,当struts ...
struts2的工作流程
StrutsPrepareAndExecuteFilter是struts2框架的核心控制器,它负责拦截由<url-pattern>/*</url=oattern>
指定的所有用户请求,当用户请求到达时,该filter会过滤用户的请求 ,如果用户请求的路径不带后缀,或者后缀以action结尾,这时请求将被转入struts2框架处理 ,否则truts2框架略过该请求的处理,当请求转入struts2框架处理时会先经过一系列的拦截器,然后再到action。
与struts1不同的是,struts2对用户的每一次请求都会创建一个action , 所以s ...
load()和get()的区别
Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:
1.如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个tNotFoundException。
2.Lo ...
1.在软件设计上struts2没有像struts1那样跟servlet的API和struts的API有着紧密的
耦合,属于非侵入式设计 ,而struts1属于侵入式设计
2.struts2提供了拦截器 ,利用拦截器可以进行AOP编程,实现如权限拦截等功能
3.struts2提供了类型转换,可以把特殊的请求参数转换成需要的类型。如果是struts1,
必须要向struts1的底层实现BeanUtil注册类型转换才行。
4.支持多种表现层技术,如:jsp ,freeMarker , Velocity等
5.struts2的输入校验可以对指定方法进行校验,解决了struts1的长久 ...
以下是接收参数的actionForm
package com.cs.formbean;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class FileU ...
在struts中的国际化如何处理? JSP页面上直接<bean:message key="login.title" /> 解决国际化显示的问题
ActionErrors errors = new ActionErrors() ;
if (this.username != null && this.username.length() < 4 ) {
errors.add("username", new ActionMessage("username.tooshort",new Objec ...
. 如何分页?
1.把pager-taglib.jar放到lib目录下(仅此足亦,完全没必要改web.xml什么的,还有官方war包中的东西都可以不要)
2.在Jsp页面嵌入<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %>
分页代码:
action中示范代码:
PageModel pm = empMgr.selectAllEmp(PageModel.getOffset(request), PageModel.getPa ...
1. 在action中每次都要从spring管理的配置中区获取对象 , 所以考虑把此配置放到web的application中
容器启动就加载,
方法一 .配置如下:
<!-- 配置如下 名字有约定,由spring内部提供 , 也可以自己写一个监听器 -->
在web.xml中配置如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationCon ...
spring中如何做事务?(标准做法---集成jdbc)
配置如下:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="j ...
spring中如何做事务?(标准做法---集成hibernate)
配置如下:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
...
spring中如何做事务?(最原始的做法 只供参考)
之前说的都要实现接口,对Api的依赖性强 属于侵入式的
接下来讲下非侵入式的代码如何实现:
针对环绕事务处理 , 要指明 ProceedingJoinPoint 参数
ProceedingJoinPoint 相当于事件 , 此参数会带着触发该事件的源信息
obj = pjp.proceed() ;在这里等同于调用add*()方法中的代码(参考配置)
配置如下:
<bean id="hibernateUtil" class="com.cs.u ...
spring如何做日志?(日志经典方法)
logAdvice类:
public class LogAdvice {
public void log(){
System.out.println("日志记录");
}
public void afterLog() {
System.out.println("after日志记录");
}
配置如下:
<bean id="hibernateUtil" class="com.cs.util.HibernateUtil" >& ...
sping中如何配置拦截器
配置如下
<bean id="aroundAdvice" class="com.cs.advice.AroundAdvice" ></bean>
<bean id="beforeAdvice" class="com.cs.advice.BeforeAdvice" ></bean>
<!-- 相当于JDKProxy,不过他能代理任何类的对象 -->
<bean id=" ...
jdk的动态代理
要求:
1:实现InvocationHandler
2:使用Proxy.newProxyInstance产生代理对象
3:被代理的对象必须要实现接口
public class JDKProxy implements InvocationHandler {
private Object target ;
public Object createProxyObject(Object obj) {
this.target = obj ;
Object proxyObj = Proxy.newProxyInstance(obj.getClass().ge ...