- 博客(85)
- 收藏
- 关注
原创 线程带来的风险
线程带来的风险1.安全性 非原子操作导致多个线程调用方法时获取错误结果。2.活跃性 多线程之间造成资源竞争,锁产生。3.性能问题 多线程之间的切换(上下文切换)会带来极大开销...
2020-05-09 11:04:17
250
转载 java动态绑定在属性和方法上的不同
运行时绑定也叫动态绑定,它是一种调用对象方法的机制。Java调用对象方法时,一般采用运行时绑定机制。 1.Java的方法调用过程 编译器查看对象的声明类型和方法名(对象变量的声明类型)。通过声明类型找到方法列表。 编译器查看调用方法时提供的参数类型。 如果方法是private、static、final或者构造器,编译器就可以确定调用那个方法。这是静态绑定。 如果不是上述情况,就
2017-12-15 09:57:42
351
转载 利用Session防止表单重复提交(token)
具体的做法:在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token。然后将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,表单提交的时候连同这个Token一起提交到服务器端,然后在服务器端判断客户端提交上来的Token与服务器端生成的Token是否一致,如果不一致,那就是重复提交了,此时服务器
2017-09-21 14:32:49
293
原创 Oracle_高级子查询
1.多列子查询查询与141号或者174号员工的 manager_id和department_id相同的其他员工的employee_id,manager_id,department_id//单列子查询的方式 select employee_id,manager_id,department_idfrom employees e1where manager_id in (se
2017-08-23 16:45:23
468
原创 9.SpringMVC_自定义视图和重定向
1.视图类 HelloView把view类放入IOC容器中,使用@Component@Componentpublic class HelloView implements View{ @Override public String getContentType() { return "test/html"; } @Override public void rend
2017-08-22 20:10:11
373
原创 8.SpringMVC_如何确定目标方法POJO类型参数/视图解析流程分析/
一。SpringMVC 确定目标方法POJO类型入参的过程:1.确定一个key:若目标方法的POJO类型参数没有使用@ModelAttribute修饰,则key为POJO类名第一个字母小写 若使用了该标签,则key为 @ModelAttribute 注解的value属性值。2.若implicitModel中查找key对应对象,若存在,则作为入参传入3.若implicitMod
2017-08-20 21:12:16
278
原创 7.SpringMVC_ModelAttribute注解
1.使用场景在通过页面update某数据模型部分属性时,不能new新的对象,这样update时会将未修改字段抹除。应该现在数据库中获取存在的对象,然后再将页面表单部分属性填入该对象。2.实例修改User 的名字,但不允许修改密码 @ModelAttribute public void getUser(@RequestParam(value="id",required=fals
2017-08-08 12:28:06
304
原创 6.SpringMVC_处理模型数据
Spring MVC通过以下几种途径运输出模型数据:1.ModelAndView2.Map及Model3.@SessionAttributes :会把数据放入session中,该注解只能用在类上。4.@ModelAttribute1.ModelAndView 处理方法viewName标识了返回目标页面,通过addObject方法添加模型数据。框架会把model中的数
2017-07-07 11:06:56
255
原创 5.SpringMVC_使用POJO作为参数,使用Servlet原生API作为参数
Controller类/** * SpringMVC 会自动按照请求参数名和POJO属性名进行自动匹配,支持级联属性 * @param user * @return */ @RequestMapping("/testPOJO") public String testPOJO(User user){ System.out.println(user); return S
2017-07-05 12:39:21
350
3
原创 4.SpringMVC_@RequestParam和@RequestHeader 、@CookieValue 获取请求参数
1.使用@RequestParam注解来绑定请求参数Controller类 test RequestParam使用该注解,可以得到请求参数,其中默认必须填写,不然会报错。将required=false则可以省略该参数@RequestMapping(value="/testRequestParam") public String testRequestParam(@Requ
2017-07-05 12:28:15
321
原创 3.SpringMVC_HiddenHttpMethodFilter
1.利用REST风格URL来进行资源处理HTTP的四种请求方式GET POST PUT DELETE分别处理查增改删操作。那么在springmvc里,HiddenHttpMethodFilter会将post请求转化为put或delete。(因为浏览器form只支持get和post)在web.xml中配置该过滤器 HiddenHttpMethodFilter o
2017-07-05 11:25:10
262
原创 2.SpringMVC_RequesMapping
1.@RequestMapping既可修饰方法,也可修饰类下面类对应的请求url为:Test requestMapping 类上方的值,相当于目录,而方法上的值提供细分。@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest { private static final String SUCCES
2017-07-04 21:32:31
301
原创 1.SpringMVC_简单HelloWorld
1.在web.xml配置DispatcherServlet<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee h
2017-07-04 18:45:38
201
原创 24.Spring_与Web应用整合
一、基本思路1.jar包:额外加入:spring-web-4.0.0.RELEASE.jar spring-webmvc-4.0.0.RELEASE.jar2.Spring配置文件:差别不大3.如何创建IOC容器:① 非WEB应用中直接在main直接创建②WEB应用应该在WEB应用被服务器加载时就创建IOC容器:在ServletContextListener下cont
2017-06-02 21:53:45
260
原创 23.Spring_Spring与Hibernate整合--准备
1.Spring整合Hibernate整合什么?1)由IOC容器管理hibernate的SessionFactory2)让Hibernate使用Spring声明式事务1.整合步骤:1)加入Hibernate:加入jar,添加Hibernate配置文件,编写持久化类对应.hbm.xml文件2)加入Spring3)整合Hibernate.cfg.xml文件
2017-06-02 20:38:08
246
原创 22.spring_使用xml配置事务
application-config.xml<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context
2017-06-02 11:06:12
272
原创 21.Spring_基于配置文件的方式实现切面通知
通过xml配置文件的形式来实现切面通知配置。<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/con
2017-05-30 11:38:21
276
原创 20.Spring 通过注解配置Bean
一、在classpath中扫描组件1.组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件。2.特定组件包括:@Component:基本注解,标识了一个受Spring管理的组件@Respository:标识持久层组件@Service:标识服务层(业务层)组件@Controller:标识表现层组件3.对于扫描到的组件,Spring有默认
2017-05-29 11:48:15
264
原创 29.struts2_自定义拦截器
Interceptor接口每个拦截器都实现com.opensymphony.xwork2.interceptor.Interceptor接口。init:该方法在拦截器被创建后立即调用,在生命周期里只调用一次。 intercept:每拦截一个请求,该方法调用一次。destroy:该方法将在拦截器被销毁之前调用,生命周期中也只被调用一次。AbstractI
2017-05-26 21:41:42
298
原创 28.struts2_表单重复提交
一、什么是表单的重复提交在不刷新表单页面的情况下,多提点击提交按钮已经提交成功,回退后再次点击提交在控制器相应为转发情况下,提交成功后,F5刷新页面(因为此时浏览器url是action的url会重新操作),重定向url就变化了。二、Struts2解决表单重复提交使用标签,该标签会在隐藏域和session中放入一个相同的值。经过Token或者TokenSession拦截器
2017-05-26 21:23:28
274
原创 27.struts2_文件的下载
Struts2专门为文件下载提供了一种Stream结果类型,在使用Stream结果时,不必准备一个JSP页面。可为result 设定如下参数:contentType: 结果类型contentLength:下载长度contentDisposition:设定相应头,是一个文件下载类型。一般取值格式为: attachment;filename=“document.pdf”.input
2017-05-25 15:19:21
339
原创 26.struts2_文件的上传
一、准备工作表单准备:将 HTML表单 enctype属性设置为 multipart/form-data 表单需要使用 method为post的方式 添加字段二、struts2对文件上传的支持框架中,FileUpload拦截器和Jakarta Commons FileUpload组件可以完成文件的上传。步骤:1.在对应Action建立三个属性private
2017-05-25 10:59:20
252
原创 25.struts2_自定义验证器和编程验证
一、自定义验证器定义:可以选择继承ValidatorSupport类(实现一般验证器)或FieldValidatorSupport类(实现字段验证器)。配置:默认情况下,Struts2会在类路径根目录下加载validators.xml文件中的验证器。若类路径下没有,则从com.opensymphony.xwork2.validator.validator.validators下加载
2017-05-24 20:51:23
311
原创 24.struts2_短路验证,非字段验证,相同验证规则使用一条相应
一、短路验证validation.xml中添加 conversion类型转换错误验证,当在Age文本框输入非int型参数后,后台会返回包含范围、转换错误的多条消息。 Conversion Error Occurred 20 50 Age needs to be between ${min}and ${max}
2017-05-24 15:21:17
326
原创 23.struts2_输入验证
概述:一个健壮的web应用程序必须保证用户输入时合法、有效的。除了前段js的验证外,后台也要进行验证。Struts2的输入验证:-->基于XWork Validation Framework的声明式验证:在xml中配置-->编程验证:通过编写代码进行验证输入Action类:TestValidationActionpublic class TestValidation
2017-05-24 14:39:45
210
原创 22.struts2_运行流程分析
1. 请求发送给 StrutsPrepareAndExecuteFilter2. StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 Struts2 请求(即是否返回一个非空的 ActionMapping 对象)3. 若 ActionMapper 认为该请求是一个 Struts2 请求,则 StrutsPrepareAndExec
2017-05-24 10:05:25
360
原创 21.struts2_通过超链接实现国际化转换
实现核心在于:Struts2框架如何确定Local 对象的。具体参见框架的I18n拦截器(I18nInterceptor 类)在页面上添加中英文按钮,点击即可切换语言。关键参数reqeust_localeEnglish中文
2017-05-23 20:33:22
281
原创 20.struts2_国际化
1.国际化的目标1)如何配置国际化资源文件 ①Action 范围资源文件:在Action类文件所在的路径建立命名规则ActionName_language_country.properties 的文件②包范围资源文件:在包的根路径下建立文件名为package_language_country.properties 的属性文件,一旦建立,处于该包下的所有 A
2017-05-23 19:58:22
205
原创 19.struts2_ 自定义类型转换
Struts2不能将页面输入的字符串转换到引用类型,需要自定义转换器。1.开发类型转换器类:一般扩展框架中的 StrutsTypeConverter类,2.配置类型转器:配置有2种①基于字段所在Model的包下新建一个ModelClassName-conversion.properties,在文件中植入键值对:fieldName=类型转换器的全类名(这个类是单例的)第一次使用创建
2017-05-22 20:55:38
292
原创 18.struts2_类型转换,错误消息的显示和定制
从一个HTML表单到Action对象,类型转换的是从字符串到非字符串。struts2把请求参数映射到action属性的工作由Parameters拦截器负责,可以完成字符串与基本类型之间的转换。
2017-05-22 12:32:32
369
原创 17.struts2_PrepareInterceptor拦截器
为了解决上节的问题I. 在执行删除的时候, employeeId 不为 null, 但 getModel 方法却从数据库加载了一个对象. 不该加载!II. 指向查询全部信息时, 也 new Employee() 对象. 浪费!使用PrepareInterceptor拦截器可以为每一个 ActionMethod 准备 prepare[ActionMethdName]
2017-05-21 17:14:05
380
原创 16.Struts2_使用ParamsPrepareParams拦截器栈
页面修改Employee对象时,传入Aciton id属性,在页面中需要回显。通过id在数据库中取到emp,将各个字段赋值给栈顶的新Employee。完成回显,并跳转到修改页面。public String edit(){ //传入的EmployeeID //根据EmployeeID获取数据库对象,emp是数据库取出来的 Employee emp=dao.get(empl
2017-05-21 12:02:26
342
原创 15.struts2_ModelDriven拦截器
有些Action类不代表任何Model对象,他们得功能仅限于提供显示服务,也就是控制单元。如果Action实现了ModelDriven接口,那么该拦截器会将getModel()方法返回对象置于栈顶。对应Aciton类,实现了ModelDRiven类public class EmployeeAction implements RequestAware, ModelDriven,
2017-05-21 11:16:53
247
原创 14.struts2_框架流程分析,以及Params拦截器
ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation.invoke()方法。ActionInvocation负责Interceptor,Action,Result等一系列元素的调度。而这些拦截器
2017-05-21 10:34:31
804
原创 13.struts2_主题
主题:为了让所有的UI标签能够产生同样的视觉效果而归集到一起的一组模板simple xhtml css ajax如何修改:1.在struts.xml中 2.在request中request.setAttribute("theme", "xhtml");3.在具体某个标签中
2017-05-20 21:03:22
220
原创 12.struts2_表单标签
使用表单标签的优点1.表单回显2.对页面进行布局和排版<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% request.setAttribute("the
2017-05-20 20:48:22
189
原创 11.struts2_通用标签
1 Struts2何时将Action的对象放入值栈中?放入时间:在调用Action类的Action方法时,但在之前会进行如下:-->先创建一个StrutsActionProxy对象-->在创建StrutsActionProxy之后,对其进行初始化时,把Action对象放入值栈中。2 *property标签用来输出值栈内,某个对象的属性值。 s:propert
2017-05-19 22:10:26
421
原创 10.struts2_声明式异常的处理
1.异常处理:exception-mapping元素struts.xml中配置 exception-mapping标签,可以捕捉在Action中出现的异常,exception:需要捕捉的异常名称result:出现异常后,跳转到哪个result <action name="product-save" class="com.atguigu.strut
2017-05-19 17:41:43
201
原创 9.struts2_动态方法调用
Struts2可以在忽略struts.xml配置下的方法,而根据url指定的action方法进行调用,这个功能在框架中默认关闭!1.先在配置文件中开启该功能 <action name="testDynamicMethodInvocation" class="com.atguigu.struts2.action.Test
2017-05-19 12:30:33
224
原创 Hibernate_映射文件详解
1.根节点hibernate-mapping节点属性使用package属性,可以定义该文件包名,默认下方class节点的对象都在该包中2.class节点中的动态更新节点属性在对象某字段更新后,提交update语句会只修改被更改过的字段,如果属性为false会update所有字段3.id节点,生成主键的方式。
2017-02-24 20:27:44
348
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人