Servlet Learner00

因为我是整理的...我发现后面发的...居然是在前面的 前面发的是追加的...杯具啊...

好吧 所以3取名成0了

HTTP 请求 HTTP 响应
GET & POST是HTTP协议最常用的两个方法

GET是最简单的HTTP方法 要求服务器获得一个资源并把资源发回来 这个资源可能是一个HTML页面
一个JPEG 一个PDF等等 关键是 GET要从服务器拿些东西回来
POST像是GET++ 可以请求某个东西 于此同时向服务器发送一些表单数据

GET 的总字符数有限(取决于服务器) 比如在搜索框中输入了一段很长的文字 GET可能无法正常工作
GET 的数据会追加到URL后面

GET请求剖析
GET /select/selectBeerTaste.jsp?color=dark&taste=malty HTTP /1.1
....//请求首部
Connection: keep-alive

POST请求剖析
POST /advisor/selectBeerTaste.do HTTP/1.1
...//请求首部
Collection: keep-alive
color=dark&taste=malty//这次参数放在体中 长度像GET那样受限制


HTTP响应
HTTP /1.1 200 OK
Set-Cookies:JSESSIONID=0AAB6C8D....; Pat=/testEL
Content-Type: text/html
Content-Length: 397
Date: Wed, 19 Nov 2003 03:25:40 GMT
Server: Apache-Coyote/1.1
Collection: close
<html>
...
</html>


Web服务器自己不会做的两件事
1.动态内容 Web服务器只提供静态页面(即时页面在请求到来之前都不存在) 请求到来之后 辅助应用
实际的写出HTML WEB服务器再把这个HTML交回给用户

2.在服务器上保存数据 用户提交表单中的数据时 Web服务器会看到表单数据 但会认为这是发给一个
辅助应用的请求 由这个应用为客户产生一个响应

不按java术语来说 web服务器应用就是CGI程序(CGI 公共网关接口)

servlet一个问题就是所有html都要写到print里面 所以JSP应运而生

用户点击一个链接 指向一个servlet 而不是一个静态页面 容器看出来这个请求的是一个servlet, 所以容器创建两个对象:HttpServletRequest和HttpServletResponse
容器根据请求中的URL找到正确的servlet 为中国请求创建或分配一个进程 并把请求和响应对象传递给 servlet线程
容器调用service的service()方法 根据请求的不同类型 service()方法会调用doGet或doPost方法

doGet()方法生成动态页面 并把这个页面塞到响应对象里 记住 容器还有响应对象的一个应用
过程结束 容器吧响应对象转换为一个HTTP响应 把它发回给客户 然后删除请求和响应对象

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException{}
//servlet从这里拿到容器所创建的请求和响应对象的引用

使用部署文件吧URL映射到实际的servlet 利用部署文件 你能用一种声明的方式修改应用无需修改源代码

<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
<servlet-name>Internal name 1</servlet-name>
//<servlet-name>用于吧一个<servlet>元素与一个特定的<servlet-mapping>元素绑定 最终用户绝对看不到这个名字 这个名字只在部署描述文件的其他部分中使用 这个注释大家千万别要学...因为在st3中我直接写在.java中的 所以//方便注释 要死了
<servlet-class>foo.Servlet1</servlet-class>/在这里放类的完全限定名
</servlet>
//<servlet>元素高数容器一个特定的WEB应用有哪些类文件 
<servlet>
<servlet-name>Internal name 2</servlet-name>
<servlet-class>foo.Servlet2</servlet-class>
</servlet>

<servlet-mapping>//可以这么来看 请求到来时 容器会在运行是使用这个元素 对于请求的这个URL 我应该调用哪个servlet
<servlet-name>Internal name 1</servlet-name>
<url-pattern>/Public1</url-pattern>//这是客户看到的和使用的servlet名字 但是这是一个虚构的名字 不是类真正的名字
</servlet-mapping>

<servlet-mapping>
<servlet-name>Internal name 2</servlet-name>
<url-pattern>/Public2</url-pattern>
</servlet-mapping>
</web-app>

 

mvc 业务逻辑根本不用对视图有任何的了解

WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能

HTML 由服务器返回 游览器呈现
脚本元素

NVC的核心思想是业务数据抽取痛业务数据呈现相分离 业务逻辑一定要同表示清晰的分离

model(业务数据的信息表示 关注支撑业务的信息构成 通常是多个业务实体的组合 购物车的呢荣 和处理购物车内容的规则 就属于mvc的模型 系统中只有这部分和DB通信)

view(试图层 为用户提供UI 重点关注数据的呈现 它从controller的到模型的状态 不是直接得到 控制器会把模型数据放在view能找到的一个地方 另外view还要获得用户的输入交给控制器)
control(从请求获得用户输入 明确这些输入对模型什么影响 告诉模型自行更新 并且让视图jsp能得到新的模型状态 )

==============================================================================
容器在开始线程之前创建请求和响应对象
容器service()方法调用doGet和doPost
容器开始一个新servlet线程来处理请求
容器把响应对象转换为一个HTTP请求 容器根据响应对象中的数据生成HTTP相应流
容器把有响应对象的一个引用交给servlet servlet用它打印响应
容器在部署描述文件中查找RUL 找到对应的请求的适当servlet
servlet一旦结束容器就删除请求和响应对象
协调生成动态内容 web服务器知道如何转发到容器 容器知道调用谁
容器调用服务方法管理生命周期

web服务器通过HTTP与客户端浏览器对话
servlet吧HTML增加到响应对象 是提供给用户的动态内容
servlet用有响应对象的一个引用打印响应
servlet中的任何公共类名字与部署文件中的<servlet-class>元素相匹配

容器如何处理请求
用户点击一个链接 指向一个servlet 而不是一个静态页面 容器看出来这个请求的是一个servlet, 所以
容器创建两个对象:HttpServletRequest HttpServletResponse(一个请求 一个响应 对象)

容器根据请求中的URL找到正确的servlet 为中国请求创建或分配一个进程 并把请求和响应对象传递给 servlet线程(就是HttpServletRequest HttpServletResponse)
容器调用service的service()方法 根据请求的不同类型 service()方法会调用doGet或doPost方法

doGet()方法生成动态页面 并把这个页面塞到响应对象里 记住 容器还有响应对象的一个应用
过程结束 容器吧响应对象转换为一个HTTP响应 把它发回给客户 然后删除请求和响应对象

EJB Enterpise JavaBean
Tomcat没有EJB容器 所以Tomcat是一个Web容器 而不是完全的J2EE应用服务器
Apache作为 HTTP web服务器 Tomcat作为Web容器

webapp/project name/form.html
/result.jsp
/WEB-INF/lib
/web.xml
/classes/com/...(your package) /model controller view

开发WEB应用的4大步骤
1.分析web应用的用户试图
2.分析体系结构
3.建立创建和部署应用的开发环境和部署环境
4.创建应用

转载于:https://www.cnblogs.com/taojiatao/p/4923377.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值