一、基本概念和知识点
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直接映射回调)、不需要设计可插拔的架构(直接可以用配置文件来搞定)、不需要处理所有和类型相关的问题
相关推荐
Python以其简洁的语法和丰富的库而闻名,是数据分析、机器学习和Web开发等领域的首选语言。 在描述中提到的“java2python”工具,可能是一个开源项目或服务,用于自动化这个转换过程。这样的工具通常会解析Java源...
Java 在企业级应用、Web 开发和分布式系统中有着广泛的应用,而 Python 则在数据处理、科学计算和机器学习领域表现出色。为了结合两者的优势,我们经常需要在 Java 程序中调用 Python 脚本或库,以便利用 Python 的...
几份程序员简历参考模板,涵盖Java开发、Python、Web全栈、前端开发、软件工程.rar 几份程序员简历参考模板,涵盖Java开发、Python、Web全栈、前端开发、软件工程.rar 几份程序员简历参考模板,涵盖Java开发、Python...
在Linux环境下配置Python Web开发环境是一项重要的任务,它涉及到多个组件的集成与配置。这个过程主要包括以下几个关键步骤:安装Python,设置Python开发环境,安装Eclipse集成开发环境(IDE),安装PyDev插件,配置...
《Python Web开发》这本书是为那些想要学习如何使用Python语言构建Web应用的初学者和开发者设计的。Python作为一门易学且功能强大的编程语言,在Web开发领域有着广泛的应用。本书内容详细,涵盖了一系列用于Web开发...
- Python在Web开发、数据科学、人工智能、自动化脚本编写等领域得到广泛应用。 7. 静态变量与动态变量: - Java中强类型的静态变量需要在编译阶段检查类型,有助于减少运行时错误。 - Python的动态变量可以在运行时...
2. **丰富的库支持**:Python拥有大量的标准库和第三方库,涵盖了数据科学、网络爬虫、Web开发等多个领域,极大地提高了开发效率。 3. **跨平台性**:Python可在多种操作系统上运行,如Windows、Linux、Mac OS等,...
cppweb易拓展,作者开发Java、Python等模块,用于支持Java、Python等语言开发cgi程序,开发者可以直接使用C/C++、Java、Python等语言进行混合开发。 cppweb追求小而巧,对于开源库是拿来即用,源码工程自带zlib、...
web开发设计 python为基础的web开发设计 【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM...
在IT行业中,跨语言通信是常见的需求,例如Java与Python的结合使用。本实例主要探讨如何利用Java调用Python脚本,并通过Python...同时,了解Java与Python之间的交互和MySQL的连接方式对于开发混合语言的应用至关重要。
知识点梳理: 1. Python基础 1.1 Python版本选择:Python2.x与Python3.x的对比和选择,主要因为Python2.x已停止更新,推荐使用Python3.x。...学习者通过本书可以系统地掌握Python Web开发的基本理论和实践技能。
### Java Web 开发教程知识点概览 #### 一、Java Web 开发背景及基础知识 **1.1 Java 语言简介** - **历史与现状:** - Java 是一种跨平台的面向对象编程语言,最初由 Sun Microsystems 在 1995 年发布。 - ...
各种学习资料 Android Python Java Java web C语言 C++ 汇编 Android逆向 Arm开发 51单片机 Photoshop 会声会影 Windows Unity cocos2dx 教程 视频 各种学习资料 Android Python Java Java web C语言 C++ 汇编 ...
该项目是一个以Python为主要开发语言的Java Web开发课程设计源码,包含共计99个文件,其中包括93个Python源文件、2个XML配置文件、2个数据库文件、1个IPython Notebook文件、1个JSON文件。该项目由段維翰设计,适用...
在Web开发方面,传统的Java Web框架如Struts、Spring、Hibernate,以及*** MVC等,都存在一定的复杂性,需要开发者花费大量时间学习框架技术及框架间的整合。相比之下,使用Python语言开发的Django框架以其简洁的...
Python 3.8新增了赋值表达式(walrus operator `:=`)、行级异步等特性,适用于Web开发、数据分析、人工智能等多个领域。 这些语言的中文帮助文档对于中国开发者来说是非常有价值的资源,可以帮助他们快速理解和...
Web后端开发技术必须具备良好的编程基础知识,其中包括Java、Python、Ruby等编程语言,并熟练掌握数据库相关知识。关于编程语言的选择,目前市面上流行的编程语言有很多,最常用的是Java和Python。 1. Java Java是一...
Eclipse被广泛应用于各种开发项目中,包括Web开发和Android应用开发。 Eclipse IDE提供了丰富的特性,包括代码编辑器、项目管理、版本控制等。它的扩展性极强,用户可以根据自己的需求安装各种插件,例如PyDev插件...
【标题解析】 标题"Python-一个使用Java基于免费的...综上所述,这个项目融合了Python和Java的多种技术,涵盖了Web开发的前后端,以及API集成和自然语言处理等复杂功能,是学习和实践多语言协作开发的一个良好实例。
Python在数据分析、人工智能、Web开发、自动化运维等方面有广泛应用。Python的关键知识点包括数据结构(如列表、元组、字典)、控制结构、函数、模块、面向对象编程、装饰器等。 3. **PHP**:主要应用于服务器端...