1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > web应用程序;web服务器;访问网站过程;Tomcat;发布网站;http;Maven;servlet;MVC

web应用程序;web服务器;访问网站过程;Tomcat;发布网站;http;Maven;servlet;MVC

时间:2021-08-18 17:13:05

相关推荐

web应用程序;web服务器;访问网站过程;Tomcat;发布网站;http;Maven;servlet;MVC

1. 基本概念

静态web:

html、css提供给所有人看的数据始终不会发生变化

动态web:

淘宝。。几乎是所有的网站提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各有不同技术栈:Servlet/JSP,ASP,PHP

在java中,动态web资源开发的技术统称为javaweb

1.2 web应用程序

web应用程序:可以提供就蓝旗访问的程序;

a.html、b.html…多个web资源,这些web资源可以被外界访问,对外界提供服务;能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上;对外提供了URL统一资源定位符这些同意的web资源会被放在统一文件夹下,他就是一个web应用程序–>依赖于一个Tomcat:服务器一个web应用由多部分组成(静态web,动态web) html,css,jsjsp,servletjava程序jar包配置文件(properties)

web应用程序编写完毕之后,若想提供给外界访问:需要一个服务器来统一管理;

1.3 静态web

*.html,这网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取。

静态web存在的缺点:web页面无法动态更新,所有用户看到都是同一个页面

*. 轮播图,点击特效:伪动态

*. Javascript [实际开发中它用得最多]

*. VBScript他无法和数据交互(数据无法持久化,用户无法交互)

1.4 动态web

页面会动态展示:“Web的页面展示的效果因人而异”

动态Web存在的缺点:

加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布: 停机维护

动态Web存在的优点:

Web页面可以动态更新,所有用户看到都不是同一个页面他可以与数据库交互(数据持久化:注册,商品信息,用户信息。。)

2. web服务器

2.1 技术讲解

ASP

微软:国内最早流行的就是ASP在HTML中嵌入VB的脚本,ASP+COM在ASP开发中,基本一个页面都有几千行的业务代码,页面及其混乱,混有java代码

<h1><h1> </h1><h1><h1><%System.out.println("hello");%> </h1></h1></h1>

C#IIS

php

PHP开发速度很快,功能很强大,跨平台,代码很简单(70%的网站,wp)无法承载大访问量的情况(局限性)

JSP/Servlet

sun公司主推的B/S架构基于Java语言的(所有的大公司,或者一些开源的组件,都是用java写的)可以承载三高问题带来的影响(高并发,高可用,高性能);语法像ASP,加强原有市场强度;

2.2 web服务器

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些相应信息;

IIS

微软的:ASP。。。windows中自带的

Tomcat

Tomcat是Apache 软件基金会的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,是最佳选择

而Tomcat 实际上运行JSP 页面和Servlet。目前Tomcat最新版本为10.0.5。

3. Tomcat

在下载后的bin文件中startup.bat为启动,shutdown.bat为关闭

启动之后的访问测试:http://localhost:8080/

可能遇到的问题:

java环境变量没有配置闪退问题:需要配置兼容性乱码问题:配置文件中设置

服务器核心配置文件:conf–>server.xml

可以配置启动的端口号:

tomcat的默认端口号为:8080

<Connector port="8080" redirectPort="8443" connectionTimeout="20000" protocol="HTTP/1.1"/>

mysql:3306http:80https:443

可以配置主机的名称默认的主机名为:localhost->127.0.0.1默认网站应用存放的位置为:webapps

<Host name="localhost" autoDeploy="true" unpackWARs="true" appBase="webapps">

一个网站访问的过程

谈谈一个网站是如何进行访问的

输入一个域名;回车

检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射

有:直接返回对应的ip地址,在这个地址中,有我们需要访问的web程序,可以直接访问

127.0.0.1

没有:去DNS服务器找,找到的话就返回,找不到就返回页面找不到

发布一个web网站

将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了

网站应该有的结构:

--webapps : Tomcat服务器的web目录- ROOT- bai : 网站的目录名- WEB - INF-classes : java程序-lib : web应用所依赖的jar包-web.xml : 网站配置文件- index.html 默认的首页- static-css-style.css-js-img-...

4.HTTP

HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。

文本:html,字符串…超文本:图片,音乐,视频,定位,地图…80

Https:安全的

443

两个时代

http/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接http/1.1:客户端可以与web服务器连接后,可以获得多个web资源

Http请求

客户端–发请求(request)—服务器

百度:

Request URL: / 请求地址Request Method: GET get方法/post方法Status Code: 200 OK 状态码:200Remote Address: 220.181.38.150:443

Accept: text/htmlAccept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9语言Cache-Control: max-age=0Connection: keep-alive

1.请求行

请求行中的请求方式:GET请求方式:Get,Post,HEAD,DELETE,PUT,TRACT… get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏现实数据内容,不安全,但高效post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效

2.消息头

Accept: 告诉浏览器,它所支持的数据类型Accept-Encoding: 支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1Accept-Language: 告诉浏览器,他的语言环境Cache-Control: 缓存控制Connection: 告诉浏览器,请求为你城市断开还是保持连接HOST:主机。。

请求报文

重点是格式和参数

行 POST /s?ie=utf-8HTTP/1.1头 Host: (注意这里的格式 都是名字+:+空格+内容)Cookie: name=lianmengContent-type: application/x-www-form-urlencodedUser-Agent: chrome 83空行体 username=admin&password=admin (如果是get,这里是空的,如果是post,这里可以不为空)

Http相应

服务器—相应—客户端

百度:

Cache-Control: private缓存控制Connection: keep-alive链接Content-Encoding: gzip 编码Content-Type: text/html 类型

1.相应体

Accept: 告诉浏览器,它所支持的数据类型Accept-Encoding: 支持那种编码格式 GBK UTF-8 GB2312 ISO8859-1Accept-Language: 告诉浏览器,他的语言环境Cache-Control: 缓存控制Connection: 告诉浏览器,请求为你城市断开还是保持连接HOST:主机。。Refresh:告诉客户端,多久刷新一次Location:让网页重新定位

2.相应状态码

200:请求响应成功

3xx:请求重定向

重定向:你重新到我给你的新位置去

4xx:找不到资源 (如:404)

资源不存在

5xx:服务器代码错误 (如:500,502(网关错误))

响应报文

行 HTTP/1.1 200 OK头 Content-Type: text/html;charset=utf-8Content-length: 2048Content-encoding:gzip空行体 <html><head></head><body><h1>呵呵</h1></body></html>

我们平时在向服务端发送请求的时候,服务端给我们返回的结果就包含这四部分,HTML的内容会放在响应体当中,浏览器在接到结果之后,会把响应体结果提取出来,做一个解析,再进行渲染展示出来

5.Maven

1.在javaweb开发中,需要使用大量的jar包,我们手动去导入

2.如何能够让一个东西自动帮我导入和配置这个jar包

由此,maven诞生

5.1Maven项目架构管理工具

我们目前用它来就是方便导入jar包的!

Maven的核心思想:约定大于配置

有约束,不要去违反

Maven会规定好你该如何编写我们的java代码,不需按照这个规范来

安装maven

更改conf->setting里的配置,新增一个maven-repo文件夹

<!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><localRepository>D:\JAVA\IDEA\IDEA anzhuang\idea_\idea_Maven\apache-maven-3.8.1\maven-repo</localRepository><mirror><id>nexus-aliyun</id><mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf><name>Nexus aliyun</name><url>/nexus/content/groups/public</url></mirror>

在idea中创建MavenWeb项目

。。。省略建立项目的过程

注意IDEA项目创建成功后看一眼Maven的配置

创建一个普通的maven项目

这里不勾选,直接next

这是简介的MAVEN项目

这是web应用的复杂的maven项目:

新增两个文件夹之后改变样式

pom文件

pom.xml是Maven的核心配置文件

搜索Maven仓库,选取要导入的jar包,点进去,复制Maven一栏的内容复制到dependencies中,然后他就会自动帮我们下载jar包

Maven的高级之处在于,他会帮你导入这个jar包所以来的其他jar包

Maven由于他的约定大于配置,我们之后可能会遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:

<build>.......<resources><resource><directory>src/main/resources</directory><excludes><exclude>**/*.properties</exclude><exclude>**/*.xml</exclude></excludes><filtering>false</filtering></resource><resource><directory>src/main/java</directory> //让在这个目录之下可以包含。properties和。xml文件<includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>......</build>

6.Servlet

6.1 简介

servlet是sun公司开发动态web的一门技术Sun在这些API中提供一个接口叫做:Servlet,如果想开发一个Servlet程序,只需要完成两个步骤: 编写一个类,实现Servlet接口把开发好的Java类部署到web服务器中

把实现了Servlet接口的Java程序叫做Servlet

Servlet接口中Sun公司有两个默认的实现类:HttpServlet,GenericServlet

6.2 helloservlet

1.构建一个普通的Maven项目,删除多余的东西(src目录),以后就在这个项目里建立Module,这个空工程就是Maven的主工程。(将依赖导入之后,展开其他的学习由于还在主工程里建立所以就不用重复的导入了)

2.关于Maven父子工程的理解:

父项目中的pom。xml会有

<modules><module>servlet-01</module></modules>

子项目会有

<parent><artifactId>Javaweb-02-servlet</artifactId><groupId>com.bai</groupId><version>1.0-SNAPSHOT</version></parent>

父项目中的jar包 子项目可以直接使用

3.Maven环境优化

修改web.xml为最新的

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_4_0.xsd"version="4.0"metadata-complete="true"></web-app>

将maven的结构搭建完整

4.编写一个servlet程序

1. 编写一个普通类

2. 实现Servlet接口,这里我们直接继承HttpServlet

public class HelloServlet extends HttpServlet {//由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletOutputStream outputStream = resp.getOutputStream();PrintWriter writer = resp.getWriter(); //响应流writer.print("hello");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}}

5.编写Servlet的映射

为什么要映射:我们写的事Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径

web.xml:

<!--注册Servlet--><servlet><servlet-name>hello</servlet-name><servlet-class>com.bai.servlet.HelloServlet</servlet-class></servlet> <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>hello</url-pattern></servlet-mapping>

6.配置tomcat

7.启动测试

8.JSP(不全)

8.1什么是JSP

java Server Pages:java服务器端页面。也和Servlet一样,用于动态Web技术!

最大的特点:

写JSP就是像在写HTML区别: HTML只给用户提供静态的数据JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

8.2 JSP的原理

思路:JSP是怎么执行的

代码层面没问题服务器内部工作

tomcat中有一个work目录;

IDEA中使用Tomcat的会在IDEA的tomcat中产生一个work目录

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet

JSP最终也会被转换成为Java类

JSP本质上就是一个Servlet。

10. MVC

什么是MVC:Model view Controller 模型、视图、控制器

Servlet和JSP都可以写Java代码;为了易于维护和使用;Servlet专注于处理请求,以及控制试图跳转,JSP专注于显示数据

10.1 早些年的架构

用户直接访问控制层,控制层就可以直接操作数据库

servlet--CRUD(增删改查)-->数据库弊端:程序比较臃肿,不利于维护(servlet的代码中:处理请求、响应、试图跳转、处理JDBC、处理业务代码、处理逻辑代码,把JDBC的代码也歹写到servlet的处理请求里)架构: 没有什么是加一层解决不了的程序员调用---JDBC---MySQL Oracle SqlServer 。。。

10.2 MVC三层架构

Model

业务处理:业务逻辑(Service)数据持久层:CRUD (增删改查) (dao)

View

展示数据提供链接发起Servlet请求(a,from,img…)

Contorller

接受用户的请求:(req:请求参数、Session信息。。。)交给业务层处理对应的代码控制视图的跳转

登录--->接受用户的登录请求--->处理用户的请求(获取用户登录的参数,username,password)--->交给业务层处理登录业务(判断用户名密码是否正确,事物)--->Dao层查询用户名和密码是否正确-->数据库

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。