关于系统架构
系统架构包括什么形式?
C/S架构
B/S架构
C/S架构?
Clent/Server(客户端/服务器)
C/S架构的软件或者说系统
QQ(需要先官网下载QQ软件,才能使用)
C/S架构的特点:需要安装特定的客户端软件
C/S架构系统的优缺点
优点:
速度快(软件中的数据大部分集成在客户端软件中,很少数据是从服务器端传过来的)
体验好
界面炫酷(专门的语言去实现界面,更加灵活)
服务器压力小
安全(因为大量的数据在客户端软件中,并且客户端有多个,服务器只有一个,即使服务器端受损了问题也不大,因为大量数据在客户端有缓存)
缺点:
升级维护比较差劲(维护成本高,有些软件不是那么容易下载的)
B/S架构?
B/S(Browser/Server)
B/S架构的软件或者说系统
http://www.baidu.com
http://www.jd.com
B/S是特殊的C/S系统,只不过这个C比较特殊,这个Client是一个固定不变的浏览器软件。
B/S架构系统的优缺点
优点:
升级维护方便,成本比较低(只需要升级服务器端即可)
不需要安装特定的客户端软件,用户操作极其方便,只需要打开浏览器,输入网址即可
缺点:
速度慢(因为所有数据都在服务器上,用户发送的每个请求都需要服务器全身心的响应)
体验差(界面不炫酷,因为浏览器只支持HTML,CSS,JavaScript。还速度慢)
不安全(所有数据都在服务器上,服务器发生意外,最终数据全部丢失)
不同的结构在不同的业务场景下有不同的使用场景
娱乐性建议使用C/S
公司内部使用的系统建议使用B/S,不需要炫酷的界面,维护成本低
开发B/S结构的系统实际上就是开发一个Web
WEB前端:运行在浏览器上的程序
WEB后端:WEB服务器端的程序,可以用Java开发,JavaWEB开发最核心的规范:Servlet
JavaEE是什么?
Java包括三大块:
JavaSE
Java标准版(一套类库,只不过这个类库是标准库,时候两者的基础)
JavaEE
Java企业版(也是一套类库,只不过这套类库可以帮助我们完成企业级项目的开发)
JavaME
Java微型版(也还是一套类库,只不过这套类库帮助我们进行电子设备内核的开发)
关于JavaEE的版本
B/S结构系统的通信原理
访问过程:打开浏览器,找到地址栏,输入域名或URL,打开,浏览器展示响应结果
域名:回车之后,域名解析器会将域名解析出一个具体的ip地址,端口号
ip地址:计算机在网络中的身份证号。在同一个网络中是唯一的,只有知道ip地址才能建立连接
端口号:一个计算机中每一个软件启动之后都有一个端口号,同一计算机中端口号具有唯一性,
仅代表一个软件或一个服务。
URL:统一资源定位符,描述一个资源在万维网的地址,包括域名。https://blog.csdn.net/qq_53157982 是一个完整的URL;blog.csdn.net是域名
通信步骤
用户输入网址(url)
域名解析器进行域名解析
浏览器软件在网络中根据解析到的ip搜索这台主机
根据端口号定位这台主机上的服务器软件
找到用户想要的资源并将文件响应到浏览器
浏览器接收来自服务器端的代码(HTML,CSS,JS)
浏览器渲染,执行代码,展示效果 没有涉及到java
关于WEB服务器软件
WEB服务器:
Tomcat(Apache):免费开源的轻量级WEB服务器,体积小,运行速度快,别名Catalina。
java编写,运行需要JRE
jetty
应用服务器:
JBOSS
Weblogic
WebSphere
应用服务器和WEB服务器的关系
应用服务器实现了JavaEE的所有13个规范;WEB服务器只实现了JavaEE的Servlet+JSP两个核心的规范。
说明:应用服务器包含WEB服务器,例如:JBOSS内嵌一个Tomcat服务器。
Tomcat安装下载配置
根据网上教程即可
tomcat是java编写的,运行需要JRE。那么就需要安装JDK并配置环境变量
Tomcat文件结构
bin:这个目录是Tomcat服务器的命令文件存放的目录,比如:启动Tomcat,关闭Tomcat等
conf:这个目录是Tomcat服务器的配置文件存放的目录。(server.xml文件可以配置端口号,默认8080)
lib:这个目录是Tomcat服务器的核心程序目录,因为Tomcat是java语言编写的,这里的jar包都是.class文件。
logs:Tomcat服务器的日志目录,服务器启动等信息都会在这个目录下生成日志文件。
temp:Tomcat服务器的临时目录,存放临时文件。
webapps:这个目录当中就是用来存放大量的webapp(web应用)
work:用来存放JSP文件翻译之后的java文件以及编译之后的class文件
启动Tomcat
bin目录下的startup.bat文件,通过点击它可以启动Tomcat服务器
如果环境变量配置没问题直接在命令行输入startup.bat即可
关闭则输入shutdown.bat即可关闭Tomcat。不要点×号。
验证是否启动成功打开浏览器,地址栏输入:localhost:8080,画面如下即可
什么是bat文件?
bat文件是windows操作系统专用的,bat文件是批处理文件,这种文件可以编写大量windows的dos命令,然后执行bat文件就相当于批量执行dos命令。
sh文件
在windows中无法执行,在Linux环境下能够执行shell命令。大量的shell命令编写在shell文件中,执行shell文件相当于批量执行shell命令。
bat文件和sh文件都有,说明了这个Tomcat服务器的通用性。
实现最基本的web应用
找到webapps目录
在webapps下新建一个子目录,起名oa(webapp的名字)
在oa目录下新建资源文件(如index.html)
通过浏览器访问,在浏览器输入ip,端口号,webapp名,资源名(不写会默认为index.html)
点击登录为超链接 IP地址可以省略 直接 /项目名/资源名 此为绝对路径
点击跳转即可实现页面中跳转
实现数据列表展示
编写userList.html,访问到
但是该表内数据为静态写死的数据,想要获取到动态的数据就需要利用JDBC连接数据库,数据库中有多少数据网页中就显示多少,这种技术称为动态网页技术。(并不是说网页上有flash动画),而是网页上数据根据数据库数据的改变进行变动。
对于一个动态web应用来说,一个请求和响应的过程有多少个角色参与,角色与角色之间有多少个协议
有哪些角色
浏览器软件 (谷歌,火狐,Edge,IE.......)
WEB Server(Tomcat,Jetty,WebLogic.....)
DB Server (Mysql,Oracle.......)
webapp (我们要开发的东西)
角色和角色之间需要遵循哪些规范,哪些协议。
webapp 和 WEB Server之间有一套规范:JavaEE规范之一Servlet规范
Browser 和 WEB Server之间有一套传输协议:HTTP协议。超文本传输协议
webapp 和 DB Server之间有一套规范:JDBC规范。
Servlet规范的作用:WEB Server 和 webapp解耦合
模拟Servlet本质
充当Webapp的开发者
编写配置文件
充当Tomcat开发者
运行结果如下
通过以上程序得出结论,我们javaweb程序员只需要:
编写一个类实现Serclet接口
将编写的类配置到文件中,在配置文件中:指定 请求路径 和 类名 的关系
由于在Tomcat中配置文件名和路径是固定的,都是SUN公司制定的规范中的细节
严格意义上来说Servlet其实并不只是一个简单的接口,其规定了一个合格的webapp:
应该是一个怎样的目录结构
应该有一个怎样的配置文件
配置文件的路径放在哪里
java程序放在哪里
Tomcat遵循Servlet规范,javaweb程序员也要遵循这个Servlet规范。这样Tomcat服务器和webapp才能解耦合。
开发一个带有Servlet(Java小程序)的webapp
步骤
第一步:在webapps目录下新建一个目录,起名crm(webapp的名字)
第二步:在crm目录下新建目录WEB-INF(注意全大写,规定的)
第三步:在WEB-INF目录下新建一个目录classes(全小写),存放的是字节码文件(java程序编译后的class文件)
第四步:在WEB-INF目录下新建lib目录(全小写) 注意:这个目录不是必须的,如果webapp需要第三方的jar包的话要放到这个目录下,例如连接数据库所需的数据库的驱动jar包。
第五步:在WEB-INF目录下新建一个文件:web.xml 注意:这个文件是必须的,这就是一个配置文件,在这个配置文件中描述了请求路径和Severlet类之间的对照关系。最好从其他webapp中拷贝,删除注释和不要的部分,别手写。
第六步:编写java小程序,必须实现Servlet接口,这个Servlet不在JDK中,是Oracle提供的,是JavaEE规范中的一员。Tomcat服务器实现了Servlet规范,所以Tomcat服务器也要用到,Tomcat里应该有这个接口
第七步:编译我们编写的HelloServlet
package learnjava;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet{
public void init(ServletConfig config) throws ServletException{
}
public void service(ServletRequest request,ServletResponse response)
throws ServletException,IOException{
System.out.println("My First Servlet,Hello Servlet");
}
public void destroy(){
}
public String getServletInfo(){
return "";
}
public ServletConfig getServletConfig(){
return null;
}
}
如果找不到所需jar包,需要将Tomcat下的servlet-api.jar配置到环境变量
第八步:将编译之后的class文件拷贝至classes目录下的learnjava目录下
第九步:在web.xml文件中配置信息,让请求路径和servlet类名关联在一起(注册Servlet类)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<!--servlet描述信息-->
<!--任何一个servlet都对应一个servlet-mapping-->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<!--带有包名的全限定类名,最好复制-->
<servlet-class>learnjava.HelloServlet</servlet-class>
</servlet>
<!--servlet映射信息-->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name> <!--随便 但和上面的一样-->
<!--当前这个路径可以随便写,必须以/开始-->
<url-pattern>/gyq</url-pattern>
</servlet-mapping>
</web-app>
第十步:启动Tomcat服务器
第十一步: 在浏览器输入一个url访问该项目(请求路径与xml中url-pattern相同)
服务器端输出:
注意:
一个合法的webapp的目录结构
可以在html网页中以超链接的形式访问
点击该标签访问超链接与在浏览器输入相同