- 浏览: 24860 次
- 性别:
最新评论
文章列表
1 数据回显:在方法中传递一个参数 model参数,使用这个对象的add。。。方法添加数据到域中,相当于在request中添加数据。然后前台去便利数据。
@RequestMapping("tolist")
public String tolist(Model model){
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setSex("男");
use ...
springmvv 获取前台传递的参数
- 博客分类:
- springmvc
第一种方式,例如我的form表单,有一个input标签,例如 input name = password
那么在我的controller中,定义的方法传递一个string类型的参数,例如
public String login (String password){} 这样,我们后台就可以接受到前台的参数
第二种方式:使用pojo的方式进行接收参数,例如我的user对象中定义了 name 和 password的两个参数,然后在controller中 方法传递pojo参数,
第三种,接收数组,例如checkbox
springmvc执行流程分析
- 博客分类:
- springmvc
1 首先用户发起请求,被我们的拦截器拦截,拦截之后,返回的是一个Chain拦截器连,对我们的模型类进行封装
2 前端控制器再起请求,请求处理器适配器,处理器适配器调用controller里面的方法,调用方法之后返回 modelAndView,返回给前端控制器。
3前端控制器把modelAndView传递给试图解析器,试图解析器传递给view页面
4view试图再次传递前端控制器,前端控制器通过jstl进行解析,解析之后相应给用户。
开发技巧使用BaseDao进行复用编程
- 博客分类:
- 经验
在我们以前的开发中,我们在写Dao层的时候,我们都是先声明一个接口,然后写一个具体的实现类,在声明的这个接口中,通常就是我们定义的一些CRUD的一些操作,在写业务逻辑的时候,我们发现最后CRUD的操作基本会有冗余,于是,我们开发BaseDao接口和它的实现类BaseDaoImpl。
下面看我的BaseDao的接口代码
public interface BaseDao<T> {
public void save(T t);
public void update(T t);
public void delete(T t);
public voi ...
学习aop,我们需要先学习一些专业术语
1.target:目标类,需要被代理的类。例如:UserService2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法。例如:所有的方法3.PointCut 切入点:已经被增强的连接点。例如:addUser()4.advice 通知/增强,增强代码。例如:after、before5. Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的过程.6.proxy 代理类7. Aspect(切面): 是切入点pointcut和通知advice的结合 一个线是一个特殊的面。 一 ...
使用spring进行注解开发
- 博客分类:
- spring
使用spring进行注解开发,我们首先需要在spring的配置文件中,添加扫描。也就是扫描包中,那个类有注解。<context:component-scan base-package=" "> 包就是你想要扫描的那个包。
1. @Component取代<bean class=""> @Component("id") 取代 <bean id="" class=""> 2.web开发,提供3个@Component注解衍生注解(功能一样)取代< ...
Hibernate的三种状态
- 博客分类:
- Hibernate
Transient瞬时态:特点:持久化对象没有唯一标识OID.没有纳入Session的管理.Persistent持久态:特点:持久化对象有唯一标识OID.已经纳入到Session的管理.***** 结论:持久化持久态对象有自动更新数据库的能力.Detached脱管态:特点:持久化对象有唯一标识OID,没有纳入到Session管理.瞬时态:获得:Book book = new Book();瞬时--->持久* save(book);* save()/saveOrUpdate();瞬时--->脱管* book.setId(1);持久态:获得:Book book = (Book)sessi ...
Hibernate的主键生成策略
- 博客分类:
- Hibernate
尽量要Hibernate自己去维护主键:* 主键的生成策略:* increment :自动增长.适合 short int long...不是使用数据库的自动增长机制.使用Hibernate框架提供的自动增长方式.* select max(id) from 表; 在最大值的基础上+1.(多线程的问题.)在集群下不要使用* identity :自动增长.适合 short int long...采用数据库的自动增长机制.不适合于Oracle数据库.* sequence :序列.适用于 short int long ... 应用在Oracle上 .* uuid : ...
get 和load的区别:* 1.发送SQL的时机:* load这个方法采用了一个技术.lazy延迟加载(懒加载).真正使用这个对象的数据的时候.(对象的数据不包括主键).* get这个方法是立即检索.当执行session.get()方法的时候,马上发送SQL语句查询.* 2.返回的对象:* load方法返回的是代理对象.* get方法返回的是真实的对象.(如果之前对象使用load方法查询过,那么再次调用get方法得到的model还是代理的model)* 3.查询一个不存在的数据:* load方法抛异常:ObjectNotFoundException.* get方法抛异常:NullPointE ...
1 什么是valueStack
我们首先看一下struts2核心过滤器的源码。
我们查看deFilter方法,我们跟进execute.executeAction(request, response, mapping); 再次跟进直到Dispatcher类中
讲解一下上面的源码,我们重点查看蓝色选中的代码,我们就是首先在request里面取出值栈对象,
我们可以查看一下上面的key,跟进发现 public static final String STRUTS_VALUESTACK_KEY = "struts.valueStack";
在我们第一次访问 ...
struts2 文件的上传和下载
- 博客分类:
- struts2
1 使用struts2进行文件的上传和下载十分的简单,不是再像jsp和servlet中那么麻烦。
现在说一下,如果以后我们在工作中,遇到一些组件我们不会开发,我们可以通过这种方式进行开发。
我们打开这个拦截器 fileUpload,然后我们查看这个拦截器的源码,然后我们打开javaDoc这个view,
收先我们需要在浏览器端进行一些设置,也就是在jsp页面进行一些设置。
1.method=post 2.<input type="file" name="xx"> ...
struts2 拦截器的实现机制
- 博客分类:
- struts2
1 我们都知道strus2中的拦截器是struts2 的一个核心。
想看struts2的拦截机制,我们首先要看strus2的入口,也就是在web.xml中配置的过滤器。
首先说一下这个ActionMapping这个类,这个类的作用就是存储了action的信息,和执行流程的ActionFoward信息。所以在配置了action中信息之后,mapping的信息肯定不能为空,然后我们查看下面execute.executeAction 方法,我们跟进查看之后。 我们再次跟进,我们可以在核心代码中,看到产生了代理对象,
根据struts2的流程图,我们知道这个ActionProxy创建 ...
struts2 封装请求参数(四种)
- 博客分类:
- struts2
1 直接在Action中,注入javaBean的属性,然后在action中给属性添加相应的set方法,当然,要求jsp表单input的name属性的名称和action中属性的名称相同,个人感觉这样接收参数十分乱,这样接收参数没有使用面向对象的思维去进行开发,而且action越来越像javaBean。
2 为了解决我上面十分混乱的模式,struts2 还给我们提供了另一种解决方案,就是这次我们在action中声明相应的model,例如private User user; 然后添加这个模型的get方法和set方法,相应的jsp页面在input标签中也要用相应的声明方式进行参数的接收和发送,& ...
1 导入jar包 2 文件上传
<form action="uploadServlet" method="post" encType="multipart/form-data">
<input type="file" name="f"><br>
<input type="text" name="username">< ...
public class EncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
// 1.强制转换
HttpServletRequest request = (HttpServletRequest) req;
HttpServle ...