学习完WEB之后的个人总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、WEB环境搭建
- 1.1下载服务器:
- 1.2安装部署:
- 1.3Tomcat目录结构
- 1.4创建web
- 二、Servlet
- 2.1 Servlet是什么
- 2.2 Servlet API
- 2.3 创建第一个Servle
- 2.4 Servlet 工作原理
- 2.5 Servlet 生命周期
- 2.6 Servlet请求、响应、会话常用
- 三、JSP
- 3.1 什么是JSP
- 3.2 JSP中嵌套java代码
- 3.3 JSP的内置对象*****
- 3.4 JSTL
- 四、Servlet和Filter的区别:
- 五、MVC
- 5.1 MVC介绍
- 5.2MVC与三层架构的区别与联系
- 六、AJAX
- 6.1 AJAX的工作原理
- 总结
前言
通过这一周的学习web中,让我了解到一个web项目中,需要满足以下几个条件:一个Tomcat之类的服务器、熟悉的使用Servlet、Filter、JSP、Listener、知道MVC层次结构、AJAX、文件的上传与下载,让我用文字的形式来对自己的学习做一个小总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、WEB环境搭建
1.1下载服务器:
- Tomcat官方网站:http://tomcat.apache.org/
- 目前我使用的是8.5版本,根据不同的需求可以使用对应的版本来适应
1.2安装部署:
- 直接把Tomcat的压缩包解压到安装目录(目录名不能有中文字符)
- 启动Tomcat之前还需要配置环境变量
- JAVA_HOME:jdk的安装目录,Tomcat依赖于JDK,所以必须指定该环境变量。
- CATALINA_HOME:Tomcat的安装目录,在终端(CMD)启用时,需要配置,不必须
- 进入tomcat的bin目录,可以直接运行startup.bat启动Tomcat服务,运行shutdown.bat关闭Tomcat服务
1.3Tomcat目录结构
- bin:该⽬录下存放的是⼆进制可执⾏⽂件,如果是安装版,那么这个⽬录下会有两个exe⽂件:tomcat9.exe、tomcat9w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗⼝启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat⽂件,startup.bat⽤来启动Tomcat,但需要JDK的配置,shutdown.bat⽤来停⽌Tomcat;
- conf:这是⼀个⾮常⾮常重要的⽬录,这个⽬录下有四个最为重要的⽂件:
server.xml:配置整个服务器信息。例如修改端⼝号,添加虚拟主机等;
tomcat-users.xml:存储tomcat⽤户的⽂件,这⾥保存的是tomcat的⽤户名及密码,以及⽤户的⻆⾊信息。可以按着该⽂件中的注释信息添加tomcat⽤户,然后就可以在Tomcat主⻚中进⼊Tomcat Manager⻚⾯了;
web.xml:部署描述符⽂件,这个⽂件中注册了很多MIME类型,即⽂档类型。这些MIME类型是客户端与服务器之间说明⽂档类型的,如⽤户请求⼀个html⽹⻚,那么服务器还会告诉客户端浏览器响应的⽂档是text/html类型的,这就是⼀个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html⽂件了。但如果服务器响应的是⼀个exe⽂件,那么浏览器就不可能显示它,⽽是应该弹出下载窗⼝才对。MIME就是⽤来说明⽂档的内容是什么类型的!
context.xml:对所有应⽤的统⼀配置,通常我们不会去配置它。 - lib:Tomcat的类库,⾥⾯是⼀⼤堆jar⽂件。如果需要添加Tomcat依赖的jar⽂件,可以把它放到这个⽬录中,当然也可以把应⽤依赖的jar⽂件放到这个⽬录中,这个⽬录中的jar所有项⽬都可以共享之,但这样你的应⽤放到其他Tomcat下时就不能再共享这个⽬录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个⽬录下;
- logs:这个⽬录中都是⽇志⽂件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在⽇志⽂件中。
- temp:存放Tomcat的临时⽂件,这个⽬录下的东⻄可以在停⽌Tomcat后删除!
- webapps:存放web项⽬的⽬录,其中每个⽂件夹都是⼀个项⽬;如果这个⽬录下已经存在了⽬录,那么都是tomcat⾃带的项⽬。其中ROOT是⼀个特殊的项⽬,在地址栏中没有给出项⽬⽬录时,对应的就是ROOT项⽬。http://localhost:8080/examples,进⼊示例项⽬。其中examples就是项⽬名,即⽂件夹的名字。
- work:运⾏时⽣成的⽂件,最终运⾏的⽂件都在这⾥。通过webapps中的项⽬⽣成的!可以把这个⽬录下的内容删除,再次运⾏时会⽣再次⽣成work⽬录。当客户端⽤户访问⼀个JSP⽂件时,Tomcat会通过JSP⽣成Java⽂件,然后再编译Java⽂件⽣成class⽂件,⽣成的java和class⽂件都会存放到这个⽬录下。
- LICENSE:许可证。
- NOTICE:说明⽂件。
1.4创建web
创建web的过程
二、Servlet
2.1 Servlet是什么
- 是⽤Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,⽣成动态Web内容。狭义的Servlet是指Java语⾔实现的⼀个接⼝,⼴义的Servlet是指任何实现了这个Servlet接⼝的类,⼀般情况下,⼈们将Servlet理解为后者。
- Servlet运⾏于⽀持Java的应⽤服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝⼤多数情况下Servlet只⽤来扩展基于HTTP协议的Web服务器
- Servlet的工作模式:
1、客户端发送请求到服务区
2、服务器启用并调用Servlet,Servlet根据客户端请求生成响应内容并将其传输给服务区
3、服务器将响应返回给客户端
2.2 Servlet API
Servlet API 包含以下4个Java包:
1.javax.servlet 其中包含定义servlet和servlet容器之间契约的类和接口。(非常常用)
2.javax.servlet.http 其中包含定义HTTP Servlet 和Servlet容器之间的关系。(非常常用)
3.javax.servlet.annotation 其中包含标注servlet,Filter,Listener的标注。它还为被标注元件定义元数据。(暂时没用过,不清楚)
4.javax.servlet.descriptor,其中包含提供程序化登录Web应用程序的配置信息的类型。(一样,不清楚)
2.3 创建第一个Servle
- 创建⼀个类实现Servlet接⼝,重写⽅法。或继承HttpServlet亦可
init(初始化方法) service(处理get/post请求的方法) destroy(销毁方法) - 在web.xml⽂档中配置映射关系
XML中配置好这个Servlet的映射关系:
<servlet> <servlet-name>⾃定义名称</servlet-name> <servlet-class>处理请求的类的完整路径</servlet-class></servlet> <servlet-mapping><!-- mapping 表示映射 --> <servlet-name>⾃定义名称</servlet-name><url-pattern>请求名</url-pattern></servlet-mapping>
标签的执⾏顺序: 请求过来以后->web.xml->servlet-mapping标签中的url-pattern标签中的内容和请求名 进⾏匹配->匹配成功后找对应的servlet-mapping标签中的servlet-name-> 去servlet标签中找和上⼀个servlet-name相同的name值->去找servlet标签中的servlet-class中处理类的完整路径
- 启动tomcat,在浏览器输⼊http://localhost:8080/⼯程名/访问服务器的路径
2.4 Servlet 工作原理
- Servlet接⼝定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载⼊内存,并产⽣Servlet实例和调⽤它具体的⽅法。但是要注意的是,在⼀个应⽤程序中,每种Servlet类型只能有⼀个实例。
- ⽤户请求致使Servlet容器调⽤Servlet的Service()⽅法,并传⼊⼀个ServletRequest对象和⼀个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使⽤这两个对象。
- ServletRequest中封装了当前的Http请求,因此,开发⼈员不必解析和操作原始的Http数据。ServletResponse表示当前⽤户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给⽤户。
- 对于每⼀个应⽤程序,Servlet容器还会创建⼀个ServletContext对象。这个对象中封装了上下⽂(应⽤程序)的环境详情。每个应⽤程序只有⼀个ServletContext。每个Servlet对象也都有⼀个封装Servlet配置的ServletConfig对象。
2.5 Servlet 生命周期
当客户端首次发送请求后,由服务器Tomcat去解析请求,根据请求找到对应的Servlet,判断对象是否存在,不存在则创建Servlet实例,调用init()初始化方法,再调取service()方法,判断客户端的请求方法,get则执行doGet()、post、则执行doPost(),处理完之后,作出响应结果给客户端,当用户发送第二次请求时,会判断对象是否存在,不再执行init(),直接执行service()方法,调取doGet/doPost方法,当服务器关闭时,调用destory()销毁
首次----判读(对象)----init()-----service()------service()-----destory()
2.6 Servlet请求、响应、会话常用
1.请求
常用方法:
1)String getParameter(String name) 根据表单组件名称获取提交数据,返回值是String
2)String[ ] getParameterValues(String name) 获取表单组件对应多个值时的请求数据
3)void setCharacterEncoding(String charset) 指定每个请求的编码(针对post请求才起作⽤)
4)RequestDispatcher getRequestDispatcher(String path) --跳转⻚⾯
5)存值 request.setAttribute(“key”,value);
6)取值 request.getAttribute(“key”);
2.响应
常用方法:
void addCookie(Cookie var1);//给这个响应添加⼀个cookie
void sendRedirect(String var1) ;//发送⼀条响应码,将浏览器跳转到指定的位置
PrintWriter getWriter() 获得字符流,通过字符流的write(String s)⽅法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端
setContentType() 设置响应内容的类型
3.会话
常用方法:
void setAttribute(String key,Object value) 以key/value的形式保存对象值,将数据存储在服务器端
String getId() 获取sessionid,当第⼀次登录成功后,session会产⽣⼀个唯⼀的id,浏览器之后访问时如果发现id值还是之前id,那么说明 当前访问的属于同⼀个会话
三、JSP
3.1 什么是JSP
简化Servlet设计,它是在传统的⽹⻚HTML⽂件(.htm,.html)中插⼊Java程序段(Scriptlet)和JSP标记(tag),从⽽形成JSP⽂件,后缀名为(*.jsp)。⽤JSP开发的Web应⽤是跨平台的,既能在Linux下运⾏,也能在其他操作系统上运⾏。
*.html 静态⻚⾯(包含固定的⻚⾯内容)
*.jsp 动态⻚⾯(⻚⾯数据可以动态更新,⽀持嵌套java代码和html代码)
3.2 JSP中嵌套java代码
声明标签 <%!变量或者⽅法声明%>
表达式标签 <%= 表达式%> 在⻚⾯上显示的效果
程序代码标签 <%java代码%> ⻚⾯上动态展示内容
3.3 JSP的内置对象*****
JSP中⼀共预先定义了9个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception
- request对象
request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要⽤于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求⽅式以及请求参数等)。request对象的作⽤域为⼀次请求 - response对象
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作⽤域,它只在JSP⻚⾯内有效。所属类型:HttpServletResponse - session对象------ 存储用户的信息,跟踪用户操作的状态 会话期间多次请求也是有效的
session 对象是由服务器⾃动创建的与⽤户请求相关的对象。服务器为每个⽤户都⽣成⼀个session对象,⽤于保存该⽤户的信息,跟踪⽤户的操作状态。session对象内部使⽤Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,⽽不仅仅局限于字符串类型。HttpSession - application对象--------将信息存储在服务器中,整个程序运行期间
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应⽤中都有效。与session对象相⽐,application对象⽣命周期更⻓,类似于系统的“全局变量” ServletContext - out 对象------用于在WEB中输出信息的
out 对象⽤于在Web浏览器内输出信息,并且管理应⽤服务器上的输出缓冲区。在使⽤ out 对象输出数据时,可以对数据缓冲区进⾏操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。 - pageContext 对象 -----取得范围内的参数 当前页面
pageContext 对象的作⽤是取得任何范围的参数,通过它可以获取 JSP⻚⾯的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP⻚⾯中可以直接使⽤ pageContext对象。 - config 对象--------取得服务器的配置信息,获得初始化参数
config 对象的主要作⽤是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() ⽅法可以获取⼀个config对象。当⼀个Servlet 初始化时,容器把某些信息通过config对象传递给这个 Servlet。 开发者可以在web.xml ⽂件中为应⽤程序环境中的Servlet程序和JSP⻚⾯提供初始化参数。 - page 对象------jsp本身,相当于this
page 对象代表JSP本身,只有在JSP⻚⾯内才是合法的。 page隐含对象本质上包含当前 Servlet接⼝引⽤的变量,类似于Java编程中的 this 指针。 - exception 对象-----显示异常信息(在错误页面才可以出现)
3.4 JSTL
使用方法
core
1.<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
i18n
2.<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
sql
3.<%@ taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql” %>
xml
4.<%@ taglib prefix=“x” uri=“http://java.sun.com/jsp/jstl/xml” %>
functions
5.<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/function” %>
四、Servlet和Filter的区别:
- Filter是一个处理链
Servlet和服务器以及客户端之间的请求和响应都要通过对应的Filter进行处理才会到达Servlet进行对应的处理 - Servlet的工作在于客户端和服务器之间的中间层,可以直接生成请求和响应。
Filter无法直接生成请求和响应,只能对即将到达Servlet的请求和响应进行一个修改之后再返回Servlet当中。 - Servlet的流程比较短,接受到Url的请求之后马上 响应下一个页面
Filter的流程比较长,处理完一个Filter之后可能还要处理另一个Filter再提交到Servlet进行相应的操作
五、MVC
5.1 MVC介绍
M代表模型 V代表视图 C代表控制器
M:(Model) 模型 : 应⽤程序的核⼼功能,管理这个模块中⽤的数据和值(bean,dao);
V(View )视图: 视图提供模型的展示,管理模型如何显示给⽤户,它是应⽤程序的外观;(jsp/html)
C(Controller)控制器: 对⽤户的输⼊做出反应,管理⽤户和视图的交互,是连接模型和视图的枢纽。(servlet/service)
MVC⽤于将web(UI)层进⾏职责解耦
5.2MVC与三层架构的区别与联系
- MVC的三层加起来等于三层架构中的UI层,MVC把三层架构中的UI层进行了分化,降低了耦合,而其中的C层直接与三层架构中的BLL对话
- MVC可以是三层中的⼀个表现层框架,属于表现层。三层和mvc可以共存。
- 三层是基于业务逻辑来分的,⽽MVC是基于⻚⾯来分的
- 三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,⽽是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可⽐性,是应⽤于不同领域的技术。
六、AJAX
AJAX 是与服务器交换数据并更新部分⽹⻚的艺术,在不重新加载整个⻚⾯的情况下,使用JSP会使整体耦合过高,而使用AJAX可以使得模块之间较为独立,更好的提高用户的互动性
6.1 AJAX的工作原理
Ajax的⼯作原理相当于在⽤户和服务器之间加了—个中间层(AJAX引擎),使⽤户操作与服务器响应异步化。并不是所有的⽤户请求都提交给服务器。像—些数据验证和数据处理等都交给Ajax引擎⾃⼰来做,,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。
有一位讲解AJAX很详细:
https://blog.csdn.net/Oriental_/article/details/104863762?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163592377716780261910971%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163592377716780261910971&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-104863762.pc_search_result_hbase_insert&utm_term=AJAX&spm=1018.2226.3001.4187
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
学习完WEB之后的个人总结相关推荐
- web前端开发最佳实践_学习前端Web开发的最佳方法
web前端开发最佳实践 为什么要进行网站开发? (Why web development?) Web development is a field that is not going anywhere ...
- python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?
---4.30更新---感谢大家支持,点赞都破两千了.给大家整理出来新的资料,需要的小伙伴来自取: Python练手项目视频如下: Python自学基础知识如下: 以下为原文内容: Python 学习 ...
- python基础学习[python编程从入门到实践读书笔记(连载三)]:django学习笔记web项目
文章目录 Django项目:学习笔记web网页 项目部署 参考 自己部署的网站,还是小有成就感的,毕竟踩过很多坑,实战技能也有些许进步. 网站链接:http://lishizheng.herokuap ...
- 学python后做什么工作好_学习完Python课程后可以做什么工作?
Python作为人工智能.大数据的首选编程语言,也是进入编程世界的理想选择,已经成为了大家都在追求学习的语言,那么学习Python之后到底可以做什么呢?为您详细的介绍一下. 什么是Python?Pyt ...
- 给学习java web新手们的建议和推荐一些书籍
经常有人问我新手应该看哪些书籍,怎么样才行学好J2EE.其实各人都各人的学习方法,一个人的不一定适合另一个人,我在这里就我的学习路径,给大家列举一下,希望能提供一些参考.(申明:这里我不谈首先学习什么 ...
- 深入学习.NET Web Services概念
介绍 在学完Web Service的课程后,我深深地被它的内容所吸引了,这使得我想在这方面做个总结,本篇文章是介绍.NET下的Web Service的概念的,在写作期间笔者也参考了很多优秀的文章,相信 ...
- 学习java web感想_学了近一个月的java web 感想
对于每天学习的新知识进行一定的总结,是有必要的. 之前我学的每一门知识,我都没有怎么总结自己的问题,也没有怎么去想想该怎样才能学的更好,把知识掌握的更牢固.从现在开始呢,我会每半个月,或每一个月总结总 ...
- Kali Linux学习笔记—Web渗透(1)
Kali Linux学习笔记-WEB渗透 侦察 Httrack 扫描 Nikto vega skipfish w3af Arachni OWASP_ZAP 必须掌握 Burpsuite 必须掌握 实验 ...
- 后台是怎么判断管理员用户还是普通用户_深入学习 Java Web(九) :用户管理系统...
本文转自与博客园一杯凉茶的博客. 前面学习了一大堆,什么JSP,Servlet.jstl.el等等等,大多是一些死的东西,只要会其语法,知道怎么用就行了,所以做了一个小小的只有增删改查的小demo,为 ...
最新文章
- Illustrator+FontLab 进行字体设计教程
- python hbase_Python操作Hbase
- ConcurrentHashMap,一个更快的HashMap
- 【51nod - 前缀异或】 对前缀和的理解
- Gstreamer的一些基本概念与A/V同步分析
- 学java编程语言_对于零基础的人而言 该如何学Java编程语言
- find命令进阶用法(一)
- 如何有逻辑的,简单清晰的回应问题
- nexus3 测试操作
- logit回归模型的参数估计过程_计量模型——面板向量自回归模型(PVAR模型)操作全过程...
- Servlet是什么?有什么用?
- win7网络不显示共享计算机,win7查找不到网络计算机怎么办_win7看不到网络计算机怎么解决-win7之家...
- ip中继对接_【关关闯关】AR和Cisco 2900通过SIP IP中继对接案例
- 关于SDN理解,老杨都放在这里了
- 华为云双十一、双十二系列直播圆满收官,助力企业获数智化发展商机
- Analyzing the Linux boot process-分析Linux启动过程
- Kal设置启动时输出日志,不显示logo
- php只取时间的下士_PHP获取各种起止时间
- h5 Canvas矩形的绘制
- 用esp8266远程定时开机