`
文章列表
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 ...
Global site tag (gtag.js) - Google Analytics