- 浏览: 56295 次
- 性别:
- 来自: 深圳
文章列表
对于MVC框架,参数绑定一直觉得是很神奇很方便的一个东西,在参数绑定的过程中利用了属性编辑器、类型转换器
参数绑定流程
参数绑定:把请求中的数据,转化成指定类型的对象,交给处理请求的方法
请求进入到DisptacherServlet,卸下请求中的数据
DisptacherServlet将请求中的数据发送给Controller
获取Controller需要接收的参数类型,将参数类型和请求数据发送给DataBinder
DataBinder将参数类型和请求数据再发给TypeConverter,由TypeConverter装配成一个bean
TypeConverter根据bea ...
springMVC是一个MVC框架,他控制着请求相应的整个流程,从请求一进入到应用服务器到相应离开,都离不开mvc框架
请求在应用服务器中
先说说请求相应在应用服务器的整个过程
DisptacherServlet接收到请求,并读取出请求中 ...
spring整合hibernate包括三部分:hibernate的配置、hibernate核心对象交给spring管理、事务由AOP控制 好处:
由java代码进行配置,摆脱硬编码,连接数据库等信息更灵活
session等生命周期得到更好的控制,session和事务依赖注入到DAO中,更爽
事务由AOP管理更加清晰,自动管理事务
hibernate的配置
spring提供了一个sessionfactory的实现,LocalSessionFactoryBean
通过在LocalSessionFactoryBean中set值来达到配置的效果
注意,LocalSessionFac ...
spring aop是面向切面编程,使用了动态代理的技术,这样可以使业务逻辑的代码不掺入其他乱七八糟的代码
可以在切面上实现合法性校验、权限检验、日志记录。。。
spring aop 用的多的有两种配置方法:注解配置和xml配置
注解配置更好,友好重构、错误也好检查在这里只讲注解配置
aop概念
切面:切面类,里面有切点有通知,切面包括了一切(在哪切,干什么)
切点:定义了在个地方切
通知:定义了在切点处做些什么
连接点:所有可以被切的地方
切面配置
@Aspect
public class LibraryAOPConf {}
@Aspect标记的类即是一个切面, ...
代理就像个中介,最外层操作代理对象,代理对象再调用委托对象
当需要在调用前后做一些处理,但是这些处理与业务逻辑无关的时候,如果把无关代码写在业务逻辑里面,代码就会变得很乱,这时候用代理就再好不过了。
就像spring的aop编程,也是用了代理,在调用前后做一些校验、日志记录等无关业务流程的事
因为要通过代理对象去调用委托对象,所以代理对象需要持有委托对象的引用,而且代理类中需要实现委托对象的各种方法
代理有两种一种是静态代理、一种是动态代理
静态代理是由自己编写代理类,但是代理类都相差无几,而且要每一个类都编写一个代理类的话,就会有太多的类了
动态代理是由反射技术,自动生成代理类, ...
spring有三种装配bean的方式:隐式装配、java代码装配、xml装配
隐式装配最为省事方便,也称为自动化装配这三种装配方式可以混搭着来用在这里通过一个例子来讲述配置CD的两个实现,一个是ThinkingJAVA,一个是LinuxBird注解配置定义bean
@Component
public class ThinkingJAVA{
public void play(){
System.out.println("java思想");
}
}
在这里ThinkingJAVA被Component标识成一个bean,bean的id ...
正向代理是客户端发送请求给代理服务器,代理服务器将请求发给实际处理的服务器
反向代理是客户端发送请求给服务器(实际上是个代理服务器),服务器将请求发给实际处理的服务器
情景
在一台服务器上开了apache(侦听80端口),又开了tomcat(侦听8080端口)
顶级域名解析到了apache这个服务器,想用二级域名访问到tomcat服务器下面的某个项目
解决方案
一、泛解析域名
先在云解析上配置二级域名的解析
这样子配置了,所有二级域名都会解析到了
二、APACHE配置
apache配置分为2步
第一步在/conf/extra/httpd-vhosts.conf中 ...
实现二级域名有几种方式
服务器做反向代理
服务器设置域名配置
更改服务器默认访问项目
服务器反向代理可以参考http://www.wewill.top/2016/06/14/apache反向代理/
在这里主要说说服务器设置域名转发
服务器域名配置
<Host name=”examples.localhost” appBase=”webapps”
unpackWARs=”true” autoDeploy=”true”>
#examples.localhost访问的请求直接访问webapps/examples
<Context ...
为restful开发的话,一定要设计到URL,struts正好是管理URL的
所以在struts的项目中用restful,要遵守struts的规则
rest在struts中对应的方法
上面是官方给出的帮助文档(默认情况下)
get,不带id参数——index
get,带id——show
post,不带id——create
put,带id——update
delete,带id——destroy
get,带id且访问edit资源——edit
get,不带id访问edit资源——editNew
rest的相关常量
struts.mapper.idParame ...
resful是什么
rest是一种开发的风格,他不是框架,也没有类库,是一种约定
有什么不同
非restful的开发方式
当没有接触restful的时候,URL通常是动词,比如127.0.0.1:8080/unrestful/getFile
restful的开发方式
restful的URL是名词,比如127.0.0.1:8080/restful/file
通过请求消息的method来调用具体的业务
约定的method
get,获取数据
post,新增数据
put,更新数据
delete,删除数据
约定大于配置
情景
使用Struts封装的下载文件的功能
当下载文件找不到的时候,struts获取的InputStream为null
这个时候,就会报500错误
java.lang.IllegalArgumentException : Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the tag specified for this action.
org.apache.struts2.dispatcher.StreamResult.do ...
DF
df – report file system disk space usage 查看文件系统的使用清空
用法
df [-hi] [path]
选项
-h human readable ,以人类易读的方式显示size
-i inode 显示inode,不显示硬盘容量
DEMO
注意
df后面接path的话,会输出这个path所在的文件系统的信息
DU
du – show file space usage ,输出文件的大小
默认情况下,输出当前目录和所有子目录的大小
选项
-s display only a total for each arg ...
df
df - report file system disk space usage 查看文件系统的使用清空
用法
df [-hi] [path]
选项
-h human readable ,以人类易读的方式显示size
-i inode 显示inode,不显示硬盘容量
demo
注意
df后面接path的话,会输出这个path所在的文件系统的信息
du
du - show file space usage ,输出文件的大小
默认情况下,输出当前目录和所有子目录的大小
选项
-s display only a total for each argume ...
硬连接和软连接,第一感觉就像是window的快捷方式,实则不然
要说硬连接和软连接,那就必须了解inode和block以及分区了
EXT文件系统在创建分区的时候,就划分了两块区域,inode table和date block
INODE
inode – index node ,索引节点
每一个inode固定分配了128bytes的空间
一个文件和目录对应着一个inode
多个文件可以对应一个inode
当访问一个文件的时候,发生了什么
首先会找到这个文件名对应的inode number,然后拿着inode number 找到inode,获取inode中的信息,inod ...
CAT
cat – concatenate print files 连续的输出文件内容
用法
cat [-nbA] file
选项
-n line number 输出行号
-b line number nonblank 输出空白行的行号
-A show All 显示特殊字符
TAC
tac – concatenate print files reverse 反序的查看文件
MORE
more – ...