java基础
Posted zhulibin2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础相关的知识,希望对你有一定的参考价值。
见文件中
Bean的xml配置
1.bean的初始化方式
三种方式: 默认构造器,静态工厂初始化(了解)和实例工厂初始化(了解)
2.springbean的作用域
Bean默认作用域是单实例的
可以设置非单实例
作用域介绍:
比如:将作用域设置request时,原理是在request对象创建好后调用,request.setAttribute(“bean4”,ctx.getBean(“bean4”))。
Bean的生命周期
注意: spring的bean容器关闭后才会调用销毁方法。
2.Bean的属性注入
两种方式: 构造器注入和属性注入
1) 构造器注入
配置文件
Java类
1. bean的初始化使用有参数构造器时,需要同时给属性赋值,这时就叫做bean的属性注入,bean的初始化方式还是构造方法。
2)setter注入
配置实例
复杂属性注入
1. list注入
2.map属性注入
Property注入
3)团队开发
Bean的注解配置
@Autowired和qualifier(“”)注解可以使用Resource替代.
Spring整合junit
Classpath: 指定项目的根路径
@RunWith: 使用springJunit类加载器
@ContextConfiguration: 指定配置文件
注意: @Autowired根据类型自动注入,如果类型是接口,那么会默认找到实现类.如果有多个实现类则会抱错
AOP
Xml文件操作
Schema约束
w3c中http://www.w3.org/2001/XMLSchema-instance,这个是w3预定义的命名空间。客户可以根据这个名称空间创建自己的约束文档。就像w3定义了一个标准接口一样,实现这个接口可以具备自定义约束文档的能力,比如:<complexType>这个标签就是w3预定义的标签,用于客户实现自己的约束文档。用户做完自己的约束文档后就可以在实例文档中使用这个约束文档,创建对应的配置文件。
即定义自己的约束文档然后使用的过程是:
自定义约束文档: 引入w3预定义命名空间,使用其内的标签定义自己的约束标签。
实例文档: 引入预定义命名空间,引入自定义明明空间和位置。使用自定义标签进行配置,从而完成配置文件作用。
使用实例:
如下:
1)xmls引入自定义命名空间 2)xmlns:xsi:引入预定义命名空间 3)xsi:schemalocation:引入自定义空间位置
Xml解析
Servlet
注意: servletConfig可以获取配置文件(xml文件)中配置的servlet对象的初始化参数。
url-pattern
缺省servlet
注意:tomcat目录下有一个默认web.xml文件,当部署项目时默认读取项目下的web.xml文件,如果读取不到则会到全局web.xml中寻找。全局中配置默认缺省servlet和jspServlet。
ServletContext
servletContext三个作用
1. 获取初始化参数(不重要,忽略)
2. 获取web中任何资源的路径
实例:如下所示,a.txt,b.txt, c.txt都是可以获取的。d.txt无法获取是因为其没有发布到tomcat下。
补充: classpath即src下的java文件编译后的classes文件夹目录下。
3. 域对象
Response
设置响应信息
通过writer响应文本信息
注意:setContentType是设置response查询码表和设置头的两个结合。
响应图片
文件下载
代码实例:
前端:
后台:
文件下载中文文件名乱码
如上代码: 因为getMimeType和getRealPath不需要对文件名解码,因为不在网络上传输,所以不需要解码,所以直接使用文件名字符串即可。但是setHeader(“Content-Disposition”“attachmetn;filename=”+filenameEncoder)这段代码需要在网络上传输并通过浏览器默认解码,所以需要使用文件名进行解码。
Request
1. 请求转发
当servlet1无法解决这个问题是,但是servlet2可以解决,那么就调用请求转发.让servlet2处理并返回.
2. request中文乱码
原因分析及解决:
解决代码:
Cookie和session
概念:会话技术就是一个解决记录客户端状态的技术
图:
Cookie技术
设置cookie携带的条件
代码示例:
Session
图示:
Jsessionid持久化---手动创建一个JSESSIONID持久化的cookie即可让jsessionid持久化磁盘,原理是jsessionid只是一个cookie,即让cookie持久化.
ThreadLocal
Threadlocal为每个线程创建了一个副本,这样可以存储全局变量.
使用threadlocal
事务
监听器Listenner
1. servletContextListener使用
使用监听器:
这样就可以观察到当servletContext创建时会打印出”context创建了......”
作用:
B.比如加载spring的配置文件: 就是通过配置监听器加载配置文件的.
C.执行定时任务
其余5个监听器与以上同理
2.6+2中的2监听器
绑定与解绑监听器
使用方法:
1. 将放到session中的对象实现监听器,不需要配置到web中,因为此对应使用时自己进入到内存中.
2. 创建servlet放入session中:
存入Session中的对象的盾化与活化
使用方法:
1. 被盾化与活化的对象实现对应监听器
2. 对象活化
盾化和活化时机:默认是服务器正常关闭时,存储在session中的对象(实现了盾化活化接口)会自动盾化到文件中. 当服务器启动后,再次调用servlet从session取出对象时,会被活化.
也可以配置文件配置对象盾化和活化的时机.
邮件发送
邮件发送过程
Filter过滤器
过滤器实例
1. web.xml中配置过滤器,/*代表过滤所有servlet
2. Filter类
3. servlet类
Filter图解
: filter1和filter2哪个先执行和mapping的顺序有关系
Filter配置
1.urlmap
3. Dispatcher
Filter作用
自动登录分析
基础加强
1. 类加载器
A.类加载器获取classpath下任意内容
注意: 可以通过ClassLoader可以获取classpath下的所有内容.
SpringMVC
1.整体架构
1. 流程图
2. 流程细节图
2.Web.xml配置文件
3. 返回值方式
2.异常处理
异常图解:
异常使用:
实现以下类,并将此类实例化交由spring处理.即在web.xml中进行配置.
完整版
4. 上传图片
5. restful风格
6.
!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>!--[endif]-->!--[if>以上是关于java基础的主要内容,如果未能解决你的问题,请参考以下文章