一、基本概念和知识点
1、web server:实现了http协议的tcp服务器
2、application server:实现程序逻辑的服务器
3、web container:提供基础支持的容器
4、proxy:代理,client与目标之间的中介
5、https:安全传输层协议(TLS)之上的http
6、servlet处理资源请求的程序逻辑,程序员自己处理多用户导致多线程问题
7、ServletContext:多个servlet共享的环境
8、servlet容器: 支持servlet执行的runtime
9、forward:server内部流程跳转到别的页面
10、redirect:强制client二次请求,可以体现在client的地址栏
11、session:从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器时,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。
12、cookie:每次http交互时client都会带上的数据,可以用于标记uid,数据存在client。
13、tomcat的server service connector engine servlet
server:对外暴露service,理论上可以不仅仅是http服务
service:connector+container,http服务
connector:处理外部的请求连接,如socket和传输相关
container:具体的处理逻辑的环境,其分为engine、host、context
engine:servlet的容器(支持多个虚拟主机)
host:虚拟主机(区别于硬件上的主机),对应一个网站(公网ip)
context:一个app的上下文环境(一个host可以有多个app)
14、filter 对每个请求都进行的逻辑
15、listener 事件发生时自动执行的代码,分为ServletContext,HttpSession和ServletRequest
16、csrf:(Cross-site request forgery)跨站请求伪造,利用登陆后的session信息,伪装浏览器发http请求。防御措施:api尽量不用get,因为get是单个的url,很容易被嵌入;每个post添加token域,保证是从固定的页面发起请求;或者直接添加一个账号验证或验证码;判断referer;在 HTTP 头中自定义属性并验证
17、XSS:跨站脚本(Cross-site scripting),在用户的输入中加入自动执行的js代码(可以是<script>也可以是隐藏html的事件触发),防范主要是对用户输入的转义
18、DDoS:Distributed Denial of Service 破坏信息安全“保密性”、“完整性”和“可用性”中的可用性,利用大量肉鸡模仿真实的请求,导致server资源耗尽。包括ARP、ICMP、IP、UDP、TCP和应用层的攻击等几个层次。
19、变量的范围包括 page、request、session、application等
二、java和python(以django为例)对web开发的支持
1、基础设施的层次
python:wsgi服务器、wsgi标准、web框架、app
java:app server、servlet容器、servlet、request+request、session
2、标准 wsgi vs javaee
3、signal VS listener
4、middleware VS Filter
5、django middleware tips:
process_request:收到请求后,解析url,确定view之前
process_view:进入view回调之前
view_callback:具体回调
process_template_response:view执行后,模板渲染之前(可以改模板)
process_response:生成response之后
三、实际开发流程
1、springmvc + mybatis
目录结构
pojo/entry/model
dao
service
controller
filter
依次实现数据库模式、model、dao、service、controller
打包成war
deploy到tomcat等服务器
2、django
写model、配url、写view、设置template、写配置文件
打包上线
不需要pojo、dao、service等部分
四、总结
1、java是静态类型语言,但是web开发要的是灵活性,所以java做了很多规范来提供web开发的支持,比如 javaee体系、servlet、request、header、cookie、session、filter、listener等的封装,jdbc、orm映射等
2、python是动态类型语言,支持闭包、装饰器,语言的表达能力是远大于java的,所以python没有为web开发设计很细的规范,只是定义了wsgi,使app服务器和web 框架解耦。在web框架内部,因为是脚本语言,不需要抽象request、header、cookie等数据结构(直接用dict就行),orm的映射也是很轻的。
3、python不需要依赖注入和反射(内置直接支持字符串的import)、aop(语言支持高阶函数)、webmvc(支持url直接映射回调)、不需要设计可插拔的架构(直接可以用配置文件来搞定)、不需要处理所有和类型相关的问题
相关推荐
几份程序员简历参考模板,涵盖Java开发、Python、Web全栈、前端开发、软件工程.rar 几份程序员简历参考模板,涵盖Java开发、Python、Web全栈、前端开发、软件工程.rar 几份程序员简历参考模板,涵盖Java开发、Python...
cppweb易拓展,作者开发Java、Python等模块,用于支持Java、Python等语言开发cgi程序,开发者可以直接使用C/C++、Java、Python等语言进行混合开发。 cppweb追求小而巧,对于开源库是拿来即用,源码工程自带zlib、...
《Python Web开发》,高清PDF文字版,带书签,附代码!
各种学习资料 Android Python Java Java web C语言 C++ 汇编 Android逆向 Arm开发 51单片机 Photoshop 会声会影 Windows Unity cocos2dx 教程 视频 各种学习资料 Android Python Java Java web C语言 C++ 汇编 ...
微信朋友圈web项目聚合发布的所有开发的项目教程,里面包含了太多的项目和技术教程,资源太多了,直接整合自己去看看,需要什么直接搜索,肯定有你需要的技术。
全端Web开发:使用JavaScript与Java。了解客户端和服务器端分层的好处,包括代码组织和快速原型开发;仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
这本内容详尽的指南将告诉你如何使用各种Java工具、客户端技术和Web API开发Web应用。作者首先概括了客户端-服务器端技术,然后详细介绍了很多实用的客户端-服务器端架构。你将在多个章节中参与到实战项目中,从而...
基于C++开发的WEB服务器,支持C/C++、Python、Java等多语言混合开发WEB应用
我学习了 Python 之后,想学习 web 开发,是 Django 还是 Flask 好学、强大和灵活? 搞 Java 开发的老程序员会告诉你,他只需要几周时间就可以学会用 C#开发程序。反之也是一样。一直 用 Flask 写 web 的应用同学有一天...
基于C++开发的WEB服务器,支持C、C++、Python、Java等多语言混合开发WEB应用.zip
基于C++开发的WEB服务器,支持C、C++、Python、Java等多语言混合开发WEB应用。.zip
// 本实验项目旨在开发一个基于Python的Web应用程序。项目将实现一个简单的Web服务器和客户端,通过一个简单的命令行界面进行交互。 // 这是一个简单的Java Web服务器和客户端程序,您可以将其作为参考,根据需要...
计算机专业常用英语词汇。计算机英语词汇由于其专业性比较强,很多单词都有其特定的含义,一般的通用翻译很难准确表达其意思。为了能更好的帮助小伙伴们理解自己眼前的专业词汇和准确意思,也为了让自己的编程术语,...
Web后端开发技术必须具备良好的编程基础知识,其中包括Java、Python、Ruby等编程语言,并熟练掌握数据库相关知识。关于编程语言的选择,目前市面上流行的编程语言有很多,最常用的是Java和Python。 1. Java Java是一...
软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备...
分享并整理JAVA,python,web,C,运维,大数据,云计算,人工智能,移动开发,微信开发视频,电子书,源码 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到...