- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 自定义标签
JSP自定义标签用于减少JSP的java代码实现Tag接口package com.tag;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import j
2016-02-29 12:05:18
305
原创 JSP属性范围
什么是属性范围所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围JSP的属性范围1页面(PageContext pageContext) 跳转后无法获得属性 2请求(HttpServletRequest request) 转发后可以获得属性,重定向则不行 3会话(HttpSession session) 关闭浏览器后则无法获得属性(说明打开两个IE浏览器,其
2016-02-17 17:58:15
347
原创 JSP
什么是JSPjsp和servlet一样是sun公司定义的一种用于开发动态web资源的技术。 写jsp和写html很像,但是html只能提供静态数据,而jsp可以内嵌java代码,为用户提供动态数据JSP运行原理浏览器向服务器发送请求,其实不过访问什么资源都是在访问servlet。当服务器执行jsp时,会把jsp翻译成servlet,所以当访问一个jsp页面时,其实是在访问servlet。新建一个w
2016-02-17 17:06:39
298
原创 重定向和转发引出的URL路径问题
//转发//this.getServletContext().getRequestDispatcher("/index2.jsp").forward(req, resp);//重定向//resp.sendRedirect(req.getContextPath()+"/index2.jsp");因为转发是给交给服务器,而重定向是交给浏览器在JavaWeb开发中,只要是写URL地址,那么建议最好以
2016-02-17 15:37:02
1460
1
原创 web.xml配置Servlet
什么是web.xmlweb.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。 其中的xml元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。 servlet配置由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<ser
2016-02-17 14:48:33
1491
原创 HttpServlet
什么是HttpServletsun公司为Servlet定义了一个抽象类HttpServletHttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。HttpServlet在实现Servlet接口时,覆写了s
2016-02-17 11:25:30
349
原创 Servlet
什么是ServletServlet是sun公司的一门用于开发动态web资源的技术 Servlet是一个接口,若想发布一个动态web资源,需要: 1.Java类实现Servlet接口 2.把Java类部署到web服务器中 通常把这个Java类成为ServletServlet如何运行Servlet由web服务器调用,web服务器收到Servlet访问请求后: 1.web服务器检测是否已经加载了
2016-02-17 11:05:26
325
原创 3.6线程间的通信:字节流与字符流
管道流(pipeStream)是一种特殊的流,用于线程间的通信。 字节流:PipedInputStream和PipedOutputStream 字符流:PipedReader和PipedWriter字节流package com.myObject;import java.io.IOException;import java.io.PipedInputStream;public class Rea
2016-01-19 13:57:49
420
原创 3.5生产者与消费者
多生产者与多消费者-操作值:假死假死 是所有线程都进入了waiting状态下面是一个假死的例子package com.myObject;public class ProducerObject { private String lock; public ProducerObject(String lock) { this.lock = lock;
2016-01-19 11:18:05
402
原创 3.4wait的条件发生变化导致逻辑错误
若wait的条件需要发生变化是,需要注意程序逻辑的变化下面有个错误例子package com.myObject;public class AddObject { private String lock; public AddObject(String lock) { this.lock = lock; } public void add() {
2016-01-18 16:47:20
361
原创 3.2notify和notifyAll
notify一次只能通知一个wait线程,有多少个wait就需要多少个notify,如果少了,就会出现有线程因为没有通知而一直处于wait。这个时候可以使用notifyAllpackage com.myObject;public class Object3 { public void mothd1(Object lock) { synchronized (lock) {
2016-01-18 15:25:02
247
原创 3.1等待/通知机制(wait/notify)
wait/notify 要点 wait() 执行前 在调用wait()之前,必须先要获得对象锁,即只有在同步方法或者同步代码块中调用wait()方法。 执行作用 wait()使进程进入等待(阻塞状态),在收到通知或者被中断之前都会进入预执行队列。 执行之后1 执行wait()之后,当前线程释放改对象锁,在通知前与其他线程重新竞争资源 执行之后2 执行wait()
2016-01-18 15:18:26
676
原创 2.7volatile关键字
停止不了的异步死循环同步死循环,可以通过实现Runnable接口来解决死循环,但是在64bit JVM还是会出现死循环,所以还是推荐使用volatile关键字解决,同步死循环,介绍volatile之前,做一个异步死循环的例子package com.myThread;public class Thread1 extends Thread { private boolean isR
2016-01-18 09:56:55
332
原创 2.6锁对象的改变
只要对象不变,即使对象的属性被改变,运行的结果还是同步 例如:如果A线程执行mothdA,即使B线程在等待user对象锁的过程中,A执行到(1),B还是获取不了锁,因为对象没有改变伪代码...public void mothdA(User user){... synchronized(user){ ... user.setName("A");//(1) ...
2016-01-15 13:33:47
208
原创 2.5内置类和静态内置类
先来看内置类和静态内置类的使用package com.myObject;public class PublicClass { String p="PublicClass"; public String getP() { return p; } public void setP(String p) { this.p = p; }
2016-01-14 17:59:18
294
原创 2.4String的常量池(String池)特性
看一段伪代码String a = "a";String b = "a";String c = new String("a");System.out.println(a==b);//trueSystem.out.println(a==c);//false因为java的String类型会有一个常量池管理String对象,当出现的String对象在String池中不存在时即在String池中创建该
2016-01-14 16:49:11
424
原创 2.3静态synchronized同步方法和synchronized(class)代码块
静态synchronized同步方法和synchronized(class)代码块synchronized关键字加到static静态方法就是给Class类上锁,而synchronized(class)同步代码块的作用也是一样的。package com.myObject;public class Object1 { synchronized public void print() {
2016-01-14 15:25:39
328
原创 2.2使用synchronized同步语句块
sychronized方法的弊端如果A线程执行的sychronized方法执行一个时间比较长的任务,则B线程需要等待比较长的时间,这是可以用sychronized代码块来解决package com.myObject;public class Object5 { public void mothd() { System.out.println(Thread.c
2016-01-14 11:56:31
303
原创 2.1使用synchronized同步方法
方法私有变量是线程安全的线程是否安全的关键问题在于实例中的变量 如果变量是方法的私有变量,则是线程安全的package com.test;import com.myObject.Object1;import com.myThread.Thread1a;import com.myThread.Thread1b;public class Test1 { public static void
2016-01-13 15:56:24
319
原创 1.5线程优先级
在操作系统中,优先级越高的线程,其任务会优先被CPU执行在Java中使用setPriority()来设置线程优先级,优先级分为[1,2…9,10]十个等级,超出此范围则会抛出异常线程优先级能“继承” // 测试1 System.out.println("main begin:" + Thread.currentThread().getPriority());
2016-01-13 10:39:20
213
原创 1.4线程暂停
暂停线程可以用suspend() 恢复线程可以用resume() 但是这两个方法都已经过期作废正常使用suspend和resumepackage com.myThread;public class Thread1 extends Thread { long i = 0; public Thread1() { } public long getI() {
2016-01-12 19:14:25
258
原创 1.3线程停止
三种方法 1)stop(),这个方法不安全,所以这方法已过期作废了,不建议使用 2)使用退出标志,使线程正常退出,也就是当run方法完成后线程终止 3)使用interrupt()方法中断线程,但这个方法不会终止一个正在运行的线程,还需要加入一个判断才可以完成线程停止interrupt()仅是停止标志interrupt()只是一个停止标志,并不真正停止线程package com.myThread
2016-01-12 17:40:25
318
原创 1.2线程常用方法
currentThread()可以返回代码段正在被哪个线程调用package com.myThread;public class Thread1 extends Thread { public Thread1() { System.out.println("construction this:" + this.currentThread().getName());
2016-01-12 17:38:14
330
原创 1.1使用多线程
继承Thread类package com.myThread;public class MyThread1 extends Thread{@Overridepublic void run() { super.run(); System.out.println("hello this is myThread");}}package com.test;imp
2016-01-12 17:28:19
338
原创 Spring调度
调度方法1)Java自带的java.util.Timer类,只能按照频度不能按照指定时间运行 2)使用Quartz,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂 3)Spring3.0以后自带的Task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多作业类需要继承 Quartz中需要继承org.springframework.schedu
2016-01-11 15:42:16
429
原创 AOP(3)
切入点语法切入点指示符切入点指示符用来指示切入点表达式目的,Spring AOP目前只支持执行方法这一连接点 指示符 execution 用于匹配方法执行的连接点 within 用于匹配指定类型内的方法执行 this 用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配 target 用于匹配当前目标对象类
2016-01-05 11:45:09
294
原创 AOP(2)
基于代理的AOP1)jar包 通常有cglib.jar足够了 2)接口StudentDao .javapackage com.dao;public interface StudentDao {public abstract void saveStudent();public abstract void queryStudent();}3)接口的实现S
2015-12-30 16:33:10
294
原创 AOP(1)
概述面向方面编程(AOP)也可叫做面向切面编程,是一种编程范式,用于完善面向对象编程(OOP),是Spring两大特征之一(IoC和AOP) OOP基于组件(类)进行开发,然后对组件进行组合,无法解耦组件进行开发基本概念连接点(Joinpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化、方法执行、方法调用、字段调用或者异常处理等等,Spring只支持方法执行的连接点切入
2015-12-29 16:39:48
282
原创 CGLIB动态代理
概述JDK 动态代理,只能对实现接口的类生成代理。 Cglib可以对没有实现接口的类生成代理 ,可以拦截所有的方法cglib用途-AOP框架的使用,如Spring AOP和dynaop,为他们提供方法的interception(拦截)-hibernate使用CGLIB来代理单端single-ended(多对一和一对一)关联-EasyMock和jMock是通过使用模仿(moke)对象来测试java代
2015-12-29 16:08:48
358
原创 SpEL(3)
SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”,其中“#root”默认可以认为是ApplicationContext,获取根对象属性其实是获取容器中的beanXML方式applicationContext.xml <bean id="bean1" class="java.lang.String"> <constructor-arg value="#{'h
2015-12-24 18:02:18
365
原创 SpEL(2)
基本表达式字面量表达式字符串、数字类型(int、long、float、double)、boolean、null类型 类型 示例 字符串 String str=parser.parseExpression(“‘Hello’”).getValue(String.class); 数字类型 int i=parser.parseExpression(“1
2015-12-24 16:01:39
739
原创 SpEL(1)
概述Spring表达式语言(Spring Expression Language)缩写为“SpEL”,能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,并且能与Spring功能整合SpEL是单独模块只依赖core模块,可单独使用作用基本表达式 字面量表达式、关系,逻辑与算数运算表达式、字符串连接、截取表达式、三目运算、Elibis表达式、正则表达式、括号优先级表达式;
2015-12-23 14:06:25
874
原创 Resource(4)
使用通配符加载ResourceSpring提供了Ant模式通配符匹配,由一个路径匹配一个资源变为一个路径匹配一批资源。Ant路径通配符支持“?”、“*”、“**”,注意通配符不包括目录分隔符“/”。 -“?”:匹配一个字符,如“config?.xml”匹配“config1.xml”、“config2.xml”、“config3.xml”等 -“*”:匹配零个或者多个字符串,如“com/*/con
2015-12-22 16:34:08
385
原创 Resource(3)
ResourceLoaderResourceLoader接口返回的是一个Resource 对象Spring提供了两个ResourceLoader接口的实现 - DefaultResourceLoader 适用于所有环境,可以返回UrlResource,ClassPathResource - ServletContextResourceLoader 适用于web环境,拥有Defaul
2015-12-21 17:04:25
415
原创 Resource(2)
ResourceUtilResourceUtil.javapackage com.test;import java.io.IOException;import java.io.InputStream;import org.springframework.core.io.Resource;public class ResourceUtil {private static
2015-12-18 15:11:38
770
原创 Resource(1)
概述开发中需要处理很多的外部资源(URL资源、File资源、ClassPath相关资源、服务器相关资源等),使用这些资源需要用到不同的接口,这就增加系统的复杂程度。 处理这些资源的步骤基本类似(1打开资源,2读取资源,3关闭资源)。 所以Spring提供了一个Resource的接口来统一进行这些底层的资源的访问。Resource接口Resource.classpackage org.spring
2015-12-18 10:56:29
433
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人