自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dimples_qian的博客

记录IT之路上的点滴。。。

  • 博客(69)
  • 收藏
  • 关注

原创 正则中的后向引用易错说明

正则中可以用 \1 的方式对前面出现的分组进行复用,如:我开始对\1的理解是,只要满足了w\ww的所有字符串都是可以的,但是我又发现:这说明\1这时候已经不是代表(w\ww)所匹配的字符串了,而是指前面已经匹配到的字符串"wow",所以这个测试字符串得不到任何匹配。...

2019-11-07 19:01:32 159

原创 条件分支中潜在的贪婪模式

正则当中的条件分支,就是满足任意一个条件都会匹配,但是如果各条件之间存在包含关系呢,这时候该怎么匹配?从上面可以看到,我的正则匹配的是"aa"、"bb"、"(aa bb)"中的任何一个,但是(aa bb)中又包含了aa,那么问题来了,当真的碰到字符串(aa bb)时,是分支aa起作用了,还是(aa bb)起作用了呢?答案是:(aa bb)我刻意将分支aa放在正则表达式的首位,而且我...

2019-11-07 16:17:53 201

原创 There is no getter for property named 'code' in 'class java.lang.String'

MyBaits中调用sql语句,往里传参数的过程是:如果是基本类型,直接让sql中的变量去接收传进来的变量值;如果是引用的话,先new 一个入参类型的对象 obj,然后将传进来的参数对象交给这个obj,然后通过sql中的变量名反射得到相应的get方法对象,然后通过get方法对象获取值。这是基本类型:<select id="queryUserById" parameterType="...

2018-08-27 23:43:36 2856

原创 spring中的事务控制

我们之前学了动态代理,而关于实物这块,在每个service方法中总就那么几句话,而且地方也是固定的,所以我们也考虑用动态代理来解决它,只是在spring中,框架已经为我们写好了通知类,我们直接配置就好了,跟之前AOP配置稍微有点不同,事务有它自己的配法,不过也差不多,看代码:这是我写的一个方法,模拟转账:public void changeMoney(int i,int j,int mo...

2018-08-10 17:58:00 155

原创 jdbcTemplate在Dao中的应用

我们在dao中要用jdbcTemplate的话,就要在每个dao中设置一个属性,如果采用注解的方式,那么只需在属性上写上@Autowired,如果采用xml中配置的方式,那么就要每个dao都写上属性及其set方法。我XML中对 jt  和datasource的配置如下:<bean id="jt" class="org.springframework.jdbc.core.JdbcTe...

2018-08-10 12:42:52 805

原创 关于jdbcTemplate的一般操作及其CRUD

jdbcTemplate是spring为我们提供的一个操作数据库的模板类,其实就是对JDBC做了一层薄薄的封装。使用它我们需要先导入这几个包:spring-jdbc-4.2.4.RELEASE.jar、spring-orm-4.2.4.RELEASE.jar、spring-tx-4.2.4.RELEASE.jar以及数据库驱动包然后我们可以这么用: ...

2018-08-09 18:01:50 139

原创 用注解的方式配置AOP

通知类:package com.hehe.log;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotati...

2018-08-09 13:00:47 173

原创 关于spring中的5种常用通知

这是我的通知类:package com.hehe.log;import org.aspectj.lang.ProceedingJoinPoint;public class MyLog { //前置通知 public void printLog(){ System.out.println("打印日志!"); } //后置通知 public void printLog1...

2018-08-09 11:16:45 6467

原创 spring中的切入点表达式

上篇中我们提到在XML文件中配置切入点,需要采用全匹配:pointcut="execution(public void com.dimples.hehe.service.impl.CustomerServiceImpl.saveCustomer())"这种全匹配的方式太繁杂,而且在实际开发中有数千种方法,通过这种方式肯定也不现实,下面我们讲讲切入点的通配符配法。 有时候,我们...

2018-08-08 20:28:33 388

原创 spring中AOP基本配置

我们上篇文章讲了两种代理,基于接口的代理和基于子类的代理。但在spring中,创建代理对象是由框架帮我们做的,我们只需要告诉spring:需要对哪些类中的哪些方法进行拦截,什么时候增强,具体怎么增强。那么下面我们就在bean.xml中配置这些信息。这是我们的通知类:package com.dimples.log;public class MyLog { public void ...

2018-08-08 17:43:07 119

原创 AOP相关术语

连接点:就是业务层所有方法切入点:就是被检测到需要增强的方法通知:就是具体增强的内容,分为前置通知、后置通知、异常通知、最终通知、环绕通知,具体见下图引介:不多用目标对象:被代理的对象织入:是一个动作。执行增强代码的过程,就叫织入。代理:代理对象切面: 切面是通知和切入点的结合。通知说明了干什么和什么时候干(什么时候通过方法名中的befor,after,around...

2018-08-08 13:53:07 489

原创 基于子类的动态代理

要求:被代理类不能是final的,因为代理对象会是它的子类提供者:第三方CGLib涉及的类:Enhancer创建代理对象的方法:create(Class,Callback);例子:首先导入第三方jar包:asm-3.2.jar、cglib-2.1.90.jarpublic void subProxy(){ final MyActor actor = new MyAct...

2018-08-08 12:46:32 857

原创 基于接口的动态代理

所谓代理,就是不改变原有类代码的基础上,对其方法进行增强。这里以演员举例对其进行说明。演员有出演角色的行为,他们能演戏,但他们都会与经纪公司签约,而剧组找人都是找经纪公司,向公司提供一个标准。这个过程中,演员就是原生类,经纪公司就好比是在做代理这件事。经纪公司给他们公司的演员对外宣称,低于10000的戏不演,这就是在对演员的动作进行增强。代码如下:public interface IActo...

2018-08-07 20:38:36 2195

原创 spring整合JUnit

单元测试的注解@Test的作用,其实就是把当前类实例化,然后放在一个main函数当中执行!我们在执行单元测试spring相关项目的时候,希望能自动加载spring容器而不用每个方法都手动加载一次,这时候我们就需要用到spring整合JUnit的jar包了。一:导入spring-test-4.2.4.RELEASE.jar这个jar包,在spring的开发包中就有。二:JUnit默认是不关心...

2018-08-07 14:30:59 201

原创 @Qualifier用在形参上

@Bean(name="dog") public Dog getDog(){ System.out.println(driver); System.out.println(url); System.out.println(username); System.out.println(password); return new Dog(); } @Bea...

2018-08-07 13:39:39 6109

原创 spring注解4----@PropertySource

某些值我们需要写在配置文件中,比如driver、url、username、password的值,那如何将这些值读取到呢?这时候我们用@PropertySource这个注解。首先配置文件我们这么写了:driver=com.jdbc.mysql.driverurl=localhost://3306/testDBmyname=hahahapassword=123456然后我们在Spr...

2018-08-07 13:06:05 180

原创 spring注解3----@import

上篇中我们使用SpringConfiguration类来作为spring的配置类,那现在我们希望将其中关于数据库的配置信息分离到另一个JdbcConfig类中,这时候该怎么读取呢?一:扫描JdbcConfig类所在的包@ComponentScan({"com.dimples","com.utils"})public calss SpringConfiguration{}Jdbc...

2018-08-06 20:19:21 253

原创 spring注解2----spring新注解

上篇我们说了生成bean的注解,注入属性值的注解等等,但是bean.xml中还剩部分内容:<context:component-scan base-package="com.dimples"></context:component-scan>和QueryRunner等的配置这部分内容我们一般放在SpringConfiguration中实现:@Component...

2018-08-06 19:21:21 357

原创 spring注解1----使用注解实现IOC和DI

首先使用注解,需要有spring-aop-4.2.2.RELEASE.jar 这个jar包。然后我们的bean.xml文件的约束也需要改动一下,并添加上这句话:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" x...

2018-08-06 15:46:20 216

原创 spring中的DI----依赖注入

所谓的依赖注入,其实可以简单的理解为给bean设置属性值,那么给属性赋值有几种方式:1、使用构造函数注入2、使用set方法注入3、使用注解注入注入的值类型不同,写法也不同,注入的属性类型有如下几种:1、基本类型和String类型2、其他bean类型(必须是在bean.xml中配置过的)3、复杂类型(集合类型:数组、List、Set、Map、Properties)那么...

2018-07-31 13:12:55 130

原创 bean的作用范围以及bean的生命周期

 bean的作用范围取值有五种(scope属性控制):singleton:单例,也是默认值prototype:  多例,比如让Spring接管struts2的action的时候就必须配置此属性request:  一次请求以及此次请求的转发session: 作用范围是一次会话globalsession:  作用范围是一次全局绘画,比如多台服务器之间需要共用同一个bean的时候...

2018-07-29 22:00:29 2879

原创 spring中两种创建容器的方式和三种获取bean的方式

容器的不同决定了bean什么时候创建,而在bean里关于bean的配置方式不同,决定了bean怎么创建。得到bean的容器有两种方式:ApplicationContext----立即创建,也就是在ApplicationContext创建的时候就立马创建所有的bean。ApplicationContext ac = new ClassPathXmlApplicationContext(...

2018-07-29 13:46:45 2334

原创 spring入门

Spring的使用也是很简单的三步走:第一步:下载开发包导入jar包Spring开发必须的6个jar包如下:其中的log4j-1.2.17.jar和commons-logging-1.2.jar在Spring开发包中没有,需要另行下载。 第二步:在类的根路径下创建配置文件bean.xml,导入xsd约束,将对应的bean信息配入进去。<?xml version=...

2018-07-28 20:48:31 101

原创 spring初入门的一些问题----二

前文我们说到了创建一个bean.properties文件,然后采用Class.forName("").newInstance()的方法来创建对象,但这样创建有个弊端,就是我们每次创建出来的对象都是新的,如下:这是bean工厂:package com.dimples.util;import java.util.ResourceBundle;public class MyBeanFa...

2018-07-28 15:53:41 113

原创 spring初入门的一些问题

1、程序间的依赖关系问题我们在用jdbc方式获取conn的时候有这两种写法:DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //注册驱动Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost3306/t...

2018-07-25 23:21:37 123

原创 struts2中请求参数封装再解析

struts2中有三种封装方式,第一种无model属性驱动,如下: <form action="${pageContext.request.contextPath}/testform/getform2" method="post"> 姓名:<input type="text" name="username"/><br> 年龄:&amp

2018-07-24 23:26:26 164

原创 struts2中的注解

struts2中注解很简单,因为struts.xml中内容本来就不多。下面看看具体怎么配。配置步骤:先导入一个叫 struts2-convention-plugin-2.3.24.jar 的jar包,然后在我们的动作类中直接去做注解配置就行了。值的注意的是用注解的方式的话,struts.xml文件是不能要的,否则注解配置的那些动作会因为去struts.xml中找不到而报错。看页面:&...

2018-07-23 23:07:10 350

原创 struts2中自定义拦截器

struts2里在struts-default.xml文件中有个叫defaultStack的拦截器栈这是默认的拦截器栈,我们之前的参数封装params和servlet-config拦截器都包含在这里面。当这里面的拦截器满足不了我们的需求时,我们可以自定义拦截器或拦截器栈,并将其设置为默认拦截器栈。这里我们自定义一个登陆验证拦截器,除了登陆动作以外,其他动作全部拦截,那么此时我们需要一个叫Met...

2018-07-23 22:32:52 136

原创 TSO的签到签退

先上张图: 这是整个大型机学习的路线,但是由于我们做的时候账号发下来,软件安装好就可以直接登录,所以这里我就直接从登录开始写了。先说两个常用键:enter--->换行ctrl---->确认登陆TSO系统的方法:主界面输入:LOGON USERID,按下 ctrl跳转到下个界面输入密码,第一次登陆会让你改密码,(密码不同项目组可能要求不一样,我们是全都字母...

2018-07-18 17:32:12 481

原创 struts2中的iterator标签

其中的var属性有特点,写和不写是不一样的。这是没写的情况:

2018-07-16 15:12:16 104

原创 struts2中的ValueStack

ValueStack也是contextMap中的一个对象,它是List结构的,主要有三个方法: public Object peek() {    //获取栈顶元素,栈结构不改变        return get(0);    }     public Object pop() {    //获取栈顶元素同时移除这个元素,栈结构改变        return r...

2018-07-16 13:08:32 139

原创 ContextMap、ActionContext以及ServletActionContext

ContextMap:它存了一次请求所需的所有数据,包括但不限于:request--是一个map类型session--一个map类型application--一个map类型valuestack(值栈)action--表示当前执行的动作类实例,不用关心,因为在valuestack中有这个对象parameters--包含了参数,但struts2中都是框架帮我们封装参数了,有modeldriven了,所...

2018-07-12 18:53:37 442

原创 struts2中的OGNL表达式

OGNL:Object-Graph Navigation Language,即对象图导航语言,它在struts2中很强大,但是离开了struts2基本上没什么用,其他框架很少支持这个语言。它可以访问对象的任意属性和方法,struts2会解析表达式的内容,有与表达式相关的数据则会显示,否则什么都不显示<s:property value="justtest"/><br>    ...

2018-07-11 15:16:30 136

原创 No result defined for action com.dimples.action.TestFormAction and result input

报这个错直接原因就是表单传过来的参数拦截器在包装的时候出错,你传过来的的参数无法转换为相应属性的类型,比如你前面传过来个19990312,而对应的属性类型是date,这时候就无法封装。但你又没有在action下面配置input视图,所以报异常!解决办法,配置一个name为input的result就行了,然后做相应的回显操作:界面使用struts2自带的标签,能轻松实现回显功能:<!-- 使用...

2018-07-10 17:05:07 328

原创 struts2中请求参数封装的 3 种方式

第一种,无实体类,直接用action类来充当实体类:<form action="${pageContext.request.contextPath}/testform/getform" method="post"> 姓名:<input type="text" name="username"/><br> 年龄:<input typ

2018-07-10 11:17:05 367

原创 struts2中获取servletAPI的两种方式

在struts2中我们常需要拿到这四个对象:HttpServletRequest     requestHttpServletResponse     responseHttpSession     sessionServletContext     application接下来介绍两种获取方法。第一种:直接通过struts2工具类ServletActionContext获取 request = ...

2018-07-09 16:45:10 300

原创 关于result标签type属性的三种值

第一种是转发--dispatcher这也是默认值,转发到一个页面 <package name="customer" extends="struts-default" namespace="/customer"> <action name="queryAll" class="com.dimples.action.CustomerAction" method=&amp

2018-07-09 15:03:26 4816

原创 struts2访问action的三种方式

第一种,循规蹈矩式:<a href="${pageContext.request.contextPath}/addUser">添加用户~</a><a href="${pageContext.request.contextPath}/updateUser">更新用户</a><a href="${pageContext.request

2018-07-06 14:19:00 2873

原创 strut2中关于三种动作类

struts2中有三种动作类:无入侵动作类,实现了Action动作类,继承了 ActionSupport的动作类无入侵动作类:纯自己写的动作类,跟struts2没有任何关系:public class HelloAction { //动作方法// 规范:1、访问修饰符public// 2、返回值一般为String(也可以为void)// 3、方法没有参数 public Stri...

2018-07-06 10:56:26 145

原创 struts入门示例

实现由index.jsp跳转到success.jsp这么一个功能。创建两个jsp--index.jsp、success.jsp,一个动作类--HelloAction.java,他们代码如下:index.jsp:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt...

2018-07-05 17:06:39 90

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除