b(浏览器)/s(服务器)
1、什么是B/S
客户端采用的是标准的浏览器,服务器采用的是标准的web服务器,浏览器与web服务器采用的是标准的HTTP协议进行通讯
相对于C/S而言,B/S优势:
编程相对简单,C/S结构需要单独编写通讯模块与自定义协议,而B/S结构采用的是标准的浏览器与web服务器,包含了通讯模块,并且浏览器与web服务器采用的是标准的HTTP协议进行通讯,也不需要编写
2、什么是Servlet
sun公司制定的一种用于扩展web服务器功能的组件规范。
扩展web服务器功能?
因为早期的web服务器只能处理静态资源文件,不能处理动态(需要经过一系列计算生成的页面)的资源文件,所以需要扩展。
如何扩展?(组件+容器)
组件:符合特定规范,为了实现某个功能而定义的java类。
容器:符合规范,为了组件提供运行环境,并且可以管理组件生命周期的软件模块。
注:组件依赖于容器,但并不依赖于特定的容器
3、tomcat容器
启动tomcat:双击tomcat\bin\startup.bat
验证是否启动成功:地址栏输入-localhost:8080
localhost:主机名(127.0.0.1)
8080:服务器端口号
4、如何定义一个servlet组件
a.新建一个java类,继承HttpServlet
b.重写service方法
c.在web.xml文件中配置servlet
5、http://localhost:8080/servlet01/sayHello
a.根据ip:端口号与服务器建立连接(localhost:8080)
b.根据应用名(servlet01)查找tomcat\webapps下对应的文件夹
c.如果找到该文件夹,根据/sayHello与web.xml文件中的url-pattren进行匹配
d.如果匹配成功,根据mapping中的name可以确定调用哪一个<servlet>,在<servlet>标记中通过<servlet-class>可以确定调用哪一个servlet组件
e.容器利用反射的技术创建servlet对象,并调用其service方法处理请求
6、哪些是get请求
a.直接在浏览器地址栏中输入地址
b.点击链接<a href=""></a>
c.表单的默认提交方式<form method="get" action="">
哪些是post请求
将表单的提交方式该成post <form method="post" action="">
7、如何在servlet中正确输出中文?
response.setContentType("text/html;Charser=utf-8");PrintWriter out=response.getWriter();out.print("中文");
8、如何获取请求参数值
String:request.getParameter(String name);
若参数值是中文:
GET:需要修改tomcat\conf\server.xml中69行 URIEncoding="utf-8"
POST:在获取参数值之前,调用 request.setCharacterEncoding("utf-8");
9、servlet运行原理:
第一步:浏览器根据IP:端口号与服务器建立连接
第二步:浏览器通讯模块根据http协议将数据打包
第三步:浏览器向服务器发送请求
第四步:服务器端通讯模块根据http协议拆包,并且将拆包之后的数据存放到request(请求对象)中,方便将来在service中获取请求数据
第五步:根据请求路径查找对应的servlet,容器负责创建该对象
第六步:容器负责调用该对象的service方法
第七步:在service方法中,根据具体业务逻辑编写代码,比如:向页面输出“Hello Servlet”
第八步:服务器端通讯模块从response(响应对象)中取出缓存数据,并按照http协议打包
第九步:服务器发送响应,浏览器拆包,根据服务器响应的数据生成新的页面
10、常见错误
a. servlet组件没有继承HttpServlet ——500
b. service方法写错 ——405
c. servlet配置的name不一致 ——部署报错
d. servlet-class路径写错 ——500
e. 路径写错 ——404
Address already in use:端口号被占用
解决方案:关闭之前的tomcat服务
方案一:双击shutdown.bat文件
方案二:通过命令关闭(dos界面-windows)
查找进程号:netstat -ano|findstr 8080
杀掉进程:taskkill /pid 进程号 /f