`
文章列表
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 ...
第一种方式,例如我的form表单,有一个input标签,例如 input name = password 那么在我的controller中,定义的方法传递一个string类型的参数,例如 public String login (String password){}  这样,我们后台就可以接受到前台的参数   第二种方式:使用pojo的方式进行接收参数,例如我的user对象中定义了 name 和 password的两个参数,然后在controller中 方法传递pojo参数,   第三种,接收数组,例如checkbox        
 1 首先用户发起请求,被我们的拦截器拦截,拦截之后,返回的是一个Chain拦截器连,对我们的模型类进行封装  2 前端控制器再起请求,请求处理器适配器,处理器适配器调用controller里面的方法,调用方法之后返回 modelAndView,返回给前端控制器。   3前端控制器把modelAndView传递给试图解析器,试图解析器传递给view页面   4view试图再次传递前端控制器,前端控制器通过jstl进行解析,解析之后相应给用户。
  在我们以前的开发中,我们在写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的配置文件中,添加扫描。也就是扫描包中,那个类有注解。<context:component-scan base-package=" "> 包就是你想要扫描的那个包。   1. @Component取代<bean class="">    @Component("id") 取代 <bean id="" class="">  2.web开发,提供3个@Component注解衍生注解(功能一样)取代< ...
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自己去维护主键:* 主键的生成策略:* 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"; 在我们第一次访问 ...
1 使用struts2进行文件的上传和下载十分的简单,不是再像jsp和servlet中那么麻烦。   现在说一下,如果以后我们在工作中,遇到一些组件我们不会开发,我们可以通过这种方式进行开发。   我们打开这个拦截器 fileUpload,然后我们查看这个拦截器的源码,然后我们打开javaDoc这个view,   收先我们需要在浏览器端进行一些设置,也就是在jsp页面进行一些设置。             1.method=post            2.<input type="file" name="xx">          ...
1 我们都知道strus2中的拦截器是struts2 的一个核心。   想看struts2的拦截机制,我们首先要看strus2的入口,也就是在web.xml中配置的过滤器。   首先说一下这个ActionMapping这个类,这个类的作用就是存储了action的信息,和执行流程的ActionFoward信息。所以在配置了action中信息之后,mapping的信息肯定不能为空,然后我们查看下面execute.executeAction 方法,我们跟进查看之后。 我们再次跟进,我们可以在核心代码中,看到产生了代理对象,  根据struts2的流程图,我们知道这个ActionProxy创建 ...
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 ...
Global site tag (gtag.js) - Google Analytics