- 浏览: 99497 次
- 性别:
- 来自: 北京
博客专栏
-
自己动手写java 框架
浏览量:27249
最新评论
-
zh_harry:
线上demo已经上线http://www.sparrowzoo ...
高性能轻量级markdown 解析器java 版sparrow-markdown -
zh_harry:
sp42 写道演示地址 本地的? 代码 git clone 下 ...
自己动手写mvc框架SPARROW MVC -
sp42:
非常不错 赞一个
高性能轻量级markdown 解析器java 版sparrow-markdown -
sp42:
演示地址 本地的?
自己动手写mvc框架SPARROW MVC -
sp42:
我的框架也是用原生写,已弃坑。还是 MVVM 的爽,推荐 vu ...
SPARROW-JS 从0开始写 0依赖,原生JS框架
这篇主要讲web开发基础,MVC概念的原型会从这里体现。
首先提一个问题main方法在哪?
我们学的第一种语言,写hello world时都会写main方法(除脚本语言外),那么我们想一下,我们写web程序时main在哪?
我们以b/s结构为例,很容易想到main其实有两个,一个在服务器端一个在客户端。那么服务器和客户端的通信走的是socket。通信的内容要有协议,即我们熟悉的http,http请求两个最核心的对象是request和response。那么我们再简单回忆一下web程序的hello world 过程.
request 发现请求服务器端接收处理后通过response返回给客户端.这是web程序的基本概念.
下面是httpwatch截图我们可以简单地了解http协议
到这里我们很容易想到java的servlet。
学java web开发的还都会了解servlet,那么第二个问题?
java是OOP语言,我们知道OOP的对象都是需要new出来才能引用的(或者反射)那么new在哪呢?
我们不难想到new的过程肯定是服务器端?而且是通过反射机制来生成对象,那么每次请求都要new吗?
答案是否定的,大家都知道servlet是单例多线程而且是线程安全的。这里需要注意一点servlet是不能有成员变量的,注意是成员“变量”。这里可以想到为什么struts2的action要配置成非单例?
注意这里的概念与以后的struts以及spring mvc概念的基础。struts 1或2和spring MVC跟这里是有区别和联系的。
其实servlet就是mvc的雏形,通过servlet就可以写一个mvc 的hello world.
那么为什么会出现MVC?下一篇文章介绍,谢谢关注.
接受批评,下篇文章画图。
lz被骂的好爽啊。。~~~~
一边呆着去。呵呵,其实我想得没那么跳,表达出来,别人看起来有点跳。
接受批评,下篇文章画图。
lz被骂的好爽啊。。~~~~
接受批评,下篇文章画图。
没明白你这是什么逻辑,是在夸我还是在损我
有这个感觉,没有必要让大家都喜欢,兄弟顶一个吧。
1应该是先读context param 然后创建servletContext,把context param放进去,然后加载listener,实例化listener,然后才是看filter的load标签,看servlet的load标签,然后才是23456
谢谢,这跟年龄没关系。别关注我的年龄
不说了入门的第一扁嘛
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
对了你刚说到严谨,我接受
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
不是你踩的要你顶不行吗?我都去那回复了,我还会继续写的,给点勇气。
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
首先提一个问题main方法在哪?
我们学的第一种语言,写hello world时都会写main方法(除脚本语言外),那么我们想一下,我们写web程序时main在哪?
我们以b/s结构为例,很容易想到main其实有两个,一个在服务器端一个在客户端。那么服务器和客户端的通信走的是socket。通信的内容要有协议,即我们熟悉的http,http请求两个最核心的对象是request和response。那么我们再简单回忆一下web程序的hello world 过程.
request 发现请求服务器端接收处理后通过response返回给客户端.这是web程序的基本概念.
下面是httpwatch截图我们可以简单地了解http协议
到这里我们很容易想到java的servlet。
学java web开发的还都会了解servlet,那么第二个问题?
java是OOP语言,我们知道OOP的对象都是需要new出来才能引用的(或者反射)那么new在哪呢?
我们不难想到new的过程肯定是服务器端?而且是通过反射机制来生成对象,那么每次请求都要new吗?
答案是否定的,大家都知道servlet是单例多线程而且是线程安全的。这里需要注意一点servlet是不能有成员变量的,注意是成员“变量”。这里可以想到为什么struts2的action要配置成非单例?
注意这里的概念与以后的struts以及spring mvc概念的基础。struts 1或2和spring MVC跟这里是有区别和联系的。
其实servlet就是mvc的雏形,通过servlet就可以写一个mvc 的hello world.
那么为什么会出现MVC?下一篇文章介绍,谢谢关注.
评论
48 楼
zh_harry
2013-07-25
http://lizhizhang.iteye.com/blog/1913546这里是MVC-2 请大家继续关注
47 楼
zh_harry
2013-07-24
rainsilence 写道
zh_harry 写道
小te 写道
楼主思维太跳跃了,前后语句没什么必然联系,楼主应该把语言组织一下,理理思路
接受批评,下篇文章画图。
lz被骂的好爽啊。。~~~~
一边呆着去。呵呵,其实我想得没那么跳,表达出来,别人看起来有点跳。
46 楼
rainsilence
2013-07-24
zh_harry 写道
小te 写道
楼主思维太跳跃了,前后语句没什么必然联系,楼主应该把语言组织一下,理理思路
接受批评,下篇文章画图。
lz被骂的好爽啊。。~~~~
45 楼
zh_harry
2013-07-24
小te 写道
楼主思维太跳跃了,前后语句没什么必然联系,楼主应该把语言组织一下,理理思路
接受批评,下篇文章画图。
44 楼
小te
2013-07-24
楼主思维太跳跃了,前后语句没什么必然联系,楼主应该把语言组织一下,理理思路
43 楼
zh_harry
2013-07-24
jackra 写道
深入浅出四个字,楼主已经做到了一半,所以迫不得已,踩了一脚
没明白你这是什么逻辑,是在夸我还是在损我
42 楼
jackra
2013-07-24
深入浅出四个字,楼主已经做到了一半,所以迫不得已,踩了一脚
41 楼
zh_harry
2013-07-24
rainsilence 写道
写文章的痛苦,太基本老被踩,太深入没人理
有这个感觉,没有必要让大家都喜欢,兄弟顶一个吧。
40 楼
rainsilence
2013-07-24
写文章的痛苦,太基本老被踩,太深入没人理
39 楼
fourfireliu
2013-07-24
rainsilence 写道
基本的web容器大都是这个样子
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
1应该是先读context param 然后创建servletContext,把context param放进去,然后加载listener,实例化listener,然后才是看filter的load标签,看servlet的load标签,然后才是23456
38 楼
zh_harry
2013-07-23
基础第一,语言第二
基础第一,语言第二 这句话很不错.
rainsilence 写道
你看我blog,几乎没有java的文章,虽然我很了解java。
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
基础第一,语言第二 这句话很不错.
37 楼
zh_harry
2013-07-23
rainsilence 写道
你看我blog,几乎没有java的文章,虽然我很了解java。
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
谢谢,这跟年龄没关系。别关注我的年龄
36 楼
rainsilence
2013-07-23
你看我blog,几乎没有java的文章,虽然我很了解java。
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
研究java就是浪费生命,除了市场大,没有其他的优点。供给大,意味着你永远拿不了高新。看着你,想起了我年轻的时候,不懂事,玩起了java。还好那时穷,老妈没给买好的机器。跑不动java的很多东西。于是开始搞起了前端,游戏,设计模式,手机,还顺便搞搞linux。现在回头看看。java,除了语法好看点。没啥优点。而大部分的人学java,不过是跟风,需求大而已。在年轻的时候,这也是必须的,先解决生存问题嘛~但是,再往上走嘛~~基础第一,语言第二。
敢问lz几岁了?
35 楼
zh_harry
2013-07-23
rainsilence 写道
你的文章没啥深度啊。。
不说了入门的第一扁嘛
34 楼
rainsilence
2013-07-23
你的文章没啥深度啊。。
33 楼
zh_harry
2013-07-23
如果servlet
这位同学很不错!理解到位了
rainsilence 写道
基本的web容器大都是这个样子
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
这位同学很不错!理解到位了
32 楼
rainsilence
2013-07-23
基本的web容器大都是这个样子
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
1:从main开始启动,读取web.xml,如果servlet,filter有load标签则实例化,如果是listener则直接实例化,打开socket server,监听套接字。并且运行listener的ContextInit事件方法
2:接收套接字,并且解析。
3:在对象池中查找url对应的Servlet,Filter实例。如果有则进入step4,如果没有报404
4:根据套接字中的内容生成request,response实例,根据url依次运行
1)Listener方法
2)Filter方法
3) Servlet方法(Post,Get,Delete,Put)
4)Filter方法(责任链模式回调)
5:容器获得response内容,在socket的write流上写入内容
6:调用listener的方法
MVC????一个让你专注于Servlet的一个概念而已。
P.S.Servlet,Filter,Listener,Response,Request,不过是POJO。起作用的还是Socket。这也就是为什么JavaSE学好了,JavaEE一下子就会的原因。
31 楼
zh_harry
2013-07-23
finallygo 写道
zh_harry 写道
finallygo 写道
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看 java并发编程实践 这本书
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
对了你刚说到严谨,我接受
30 楼
zh_harry
2013-07-23
finallygo 写道
zh_harry 写道
finallygo 写道
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看 java并发编程实践 这本书
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
不是你踩的要你顶不行吗?我都去那回复了,我还会继续写的,给点勇气。
29 楼
finallygo
2013-07-23
zh_harry 写道
finallygo 写道
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看 java并发编程实践 这本书
源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
你这种分享的精神我很赞同,不过我觉得写文章还是严谨一些好,另外,不是我踩的
发表评论
-
零基础小白从0到1的spring cloud alibaba 全家桶项目
2022-10-18 02:15 2442零基础暖心计划课程内容 https://spar ... -
sparrow 支持JDK依赖注入功能
2022-08-02 15:28 1908麻雀虽小,但五脏俱全 sparrow 源自中国俗语 ... -
Sparrow js 框架开源上线
2019-06-29 21:28 949sparraw 框架js 版开源上线 www.sparr ... -
SPARROW-JS 从0开始写 0依赖,原生JS框架
2018-03-15 19:52 1571SPARROW-JS 前端JS框架变幻莫测,但原生js 接口 ... -
Sparrow算法篇 从日期取交集到思维模式-2
2018-03-09 18:04 1444接上一篇 Sparrow算法篇 从日期取交集到思维模式 ... -
高性能轻量级markdown 解析器java 版sparrow-markdown
2018-02-24 17:17 4059动机 markdown 已成为网络博客最主要的排版格式。 ... -
Sparrow 算法篇 由日期取交集到思维模式
2018-02-06 23:46 1666日期交集 早在13年左右的时侯,做过一个系统,功能很简单 ... -
自己动手写mvc框架SPARROW MVC
2018-02-01 22:31 1494SPARROW-MVC SPARROW-MVC 是SPA ... -
REDIS客户端封装实践2
2018-01-30 13:32 1054接上一篇 [REDIS客户端封装意淫](https:// ... -
SPARROW 框架redis客户端封装实践
2018-01-25 21:41 1086redis 本身有客户端,先抛出来一个问题?为什么要对red ... -
SPARROW架构介绍
2018-01-24 22:02 1236sparrow 框架设计最大化解耦,理论上业务层只依赖SPA ... -
Sparrow 框架设计哲学
2018-01-24 13:21 1202sparrow 框架 麻雀虽小,但五脏俱全 为什么要写这 ... -
tomcat 日志那点事
2017-07-15 14:06 740tomcat 启动时使用的是java.util.logger ... -
疯子在思考之-异常与return 的差别
2013-10-14 14:46 1373程序异常会中断程序执行,所有所有的异常都需要捕获,否则会 ... -
MANIFEST.MF 文件内容完全详解
2013-09-02 14:49 1256打开Java的JAR文件我们经常可以看到文件中包含着一个ME ... -
疯子奉献-一个符号惹的祸
2013-08-30 14:14 1712程序员是严谨的,但是再严谨也容易出问题,这就叫做bug。 我 ... -
疯子在思考之-从日志想到的软件架构
2013-08-28 18:57 1875谈到架构是一个很泛的话题 这里我们讨论一下兼容性与扩展性 ... -
疯子在思考之java 线程的那点事儿
2013-08-14 15:13 3218很长时间没写博客了,最近事情比较多 之前在文章中提到过tomc ... -
linux 自动重启tomcat 脚本
2013-08-12 17:59 2940Tomcat作为开源的服务器 ... -
tomcat 优化及错误All threads (10) are currently busy, waiting. Increase maxThreads错误
2013-08-12 17:42 15301. 如何加大tomcat连接数 在tomcat配置文件se ...
相关推荐
《天才在左疯子在右》的基本介绍和推荐理由[定义].pdf
.net(mvc)语言开发的宾馆管理系统管理
疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机...
疯子助手是一款为苹果设备用户提供应用下载和游戏破解的软件,疯子助手里提供了海量不闪退应用和近千款极高有效度的ios热门游戏存档。 疯子助手完美支持不越狱的iPhone和iPad等iOS设备,是一款下载安装和管理软件、...
Android疯子卸载
疯子锁ie插件,锁ie,锁ie插件 懒人锁ie ie加锁 锁ie主页 ie首页被锁 ie代理设置被锁
疯子ftp上传工具源码传送数据到服务器源码版.rar
读后感ۥ天才在左疯子在右精选.doc
疯子ftp上传工具传送数据到服务器 ftp上传工具 ftp服务器上传 ftp客户端 ftp服务器客户端 2.0新功能 密码加密 在线更新 更新缓存错误
读后感《天才在左,疯子在右》.doc
疯子页面采集器是一款网页抓取工具,是用于网站信息采集,网站信息抓取,包括图片、文字等信息采集处理发布,是目前使用人数最多的互联网数据采集程序,可以采集大部分未加密页面站点。
疯子苹果助手是一款最受欢迎的应用下载平台,不越狱装软件的唯一选择、海量正版软件游戏、每日都有新增、全部免费安装,不需理会手机是否越狱,这么神奇助手,大家赶紧下载使用。 疯子苹果助手软件截图
一款轻简的小说系统,抛弃繁琐,一切从简
JSP从零开始学(视频教学版),出版时间:2016年01月 .JSP依靠强大的 Java基础,成为世界上最流行的 Web开发利器。本书通过大量的实例,循序渐进地为读者介绍了有关 JSP开发所涉及的各类知识,所有版本一律采用*版本,是...
疯子
JSP从零开始学(视频教学版),出版时间:2016年01月 .JSP依靠强大的 Java基础,成为世界上最流行的 Web开发利器。本书通过大量的实例,循序渐进地为读者介绍了有关 JSP开发所涉及的各类知识,所有版本一律采用*版本,是...
电脑疯子GHOST-WIN7-SP1旗舰版(64位).doc编程资料
傻子疯子白痴心得体会傻子疯子白痴观后感.docx
JSP从零开始学(视频教学版),出版时间:2016年01月 .JSP依靠强大的 Java基础,成为世界上最流行的 Web开发利器。本书通过大量的实例,循序渐进地为读者介绍了有关 JSP开发所涉及的各类知识,所有版本一律采用*版本,是...
BM品牌营销操作手册:做个严谨的创意疯子.pdf