目录
2、Web站点、Web应用、HTTP服务器、Web应用服务器
1、C/S、B/S与RIA
C/S
Client/Server:客户端/服务器的简称,又称为胖客户端,需要在电脑上安装特定的软件.例如:QQ
- B/S
- Browser/Server:浏览器/服务器的简称,又称为瘦客户端,不需要在电脑上安装特定的软件,只需在电脑上安装一个浏览器即可. 例如:在浏览器访问一个百度网页.
-
C/S和B/S区别
- C/S需要安装客户端软件,但是操作往往更为便捷,用户体验好,安全性好;
- B/S不需要安装客户端软件,但是用户体验往往不如C/S好,安全性也较C/S要低
RIA
1、定义:Rich Internet Applications:富客户端网络应用
2、目标:
- 基于B/S架构
- 在浏览器实现与胖客户端(C/S)类似的用户体验,比如:局部刷新,拖拽功能.
-
2、Web站点、Web应用、HTTP服务器、Web应用服务器
Web站点 - Web Site,也称为Web 网站,例如:某公司用来宣传的网站就是Web站点,用户浏览公司的信息,该站点不提供服务.属于静态站点.
- Web应用
- Web Application,就是通过浏览器访问的应用程序,为用户提供相关的服务,属于动态网站.例如:京东,淘宝,天猫
- HTTP服务器
- 1、定义:Web服务器,提供网上信息浏览服务、
- 2、例子:apache nginx IIS
- 3、特点:使用浏览器访问web站点或者web应用,必须通过HTTP服务器.
- Web应用服务器
- 1、定义:能够运行服务器上的应用程序,并将结果返回给客户端浏览器的软件.
- 2、例子:Tomcat就是Web应用服务器
- 3、特点:兼具HTTP服务器的部分功能.
-
3、开发Web应用的核心技术
1、CGI:Common Gateway Interface :通用网关接口,web应用服务器提供信息服务的标准接口,目前使用较少. - 2、.net:微软公司的企业应用框架,如:Asp.net,Ado.net
- 中小型企业使用.不能跨平台.
- 3、php:php是一个相对易学的web开发技术,在互联网小型应用中使用广泛.
- 4、JavaEE:是Oracle公司的企业应用框架,在大型的企业应用广泛.例如:Servlet,JSP是Web开发组件.
-
4、Tomcat介绍及安装
什么是Tomcat - Tomcat是Web应用服务器,又称为Servlet Container(Servlet 容器)
- Tomcat的特点
- 开源
- 免费
- 中小型应用和并发访问用户不是很多的情况下广泛使用
- 是开发调试Servlet/Jsp程序的首选
Tomcat的官网
- Apache Tomcat® - Welcome!
- 使用9.0版本
-
5、Tomcat的目录结构
- 1、bin:Tomcat的启动(startup.bat),停止(shutdown.bat)的批处理脚本和shell脚本
- 2、config:Tomcat的相关配置文件
- 3、lib:Tomcat服务器的依赖库目录,包括Tomcat服务器运行环境的依赖的jar包
- 4、logs:Tomcat默认的日志存放目录.
- 5、temp:Tomcat 运行过程中产生的临时文件
- 6、webapps:Tomcat默认的web应用部署目录
- 7、work:jsp代码生成和编译后产生的class目录
-
6、解决Tomcat控制台的乱码
1.进入conf文件夹
2.打开logging.properties文件
3.修改java.util.logging.ConsoleHandler.encoding = GBK
-
7、常见其他Servlet容器简介
- JBoss
- Resin
- GlassFish 4
- 补充:
- Weblogic bea oracle
- Websphere IBM
-
8、Servlet的概念及功能
什么是Servlet - Servlet是JavaEE规范中的Web开发组件,运行在服务器端的java程序.
- Servlet特点
- 运行在服务器端
- 需要Servlet容器的支持(如:Tomcat)
- Servlet是一个Java类,遵守一定的开发规范,比如继承HttpServlet
- 通过浏览器访问Servlet,Servlet返回给浏览器动态页面
- 本课程所学的主要内容:Servlet和JSP,JSP的本质是Servlet.
-
在生成的servlet中添加
-
/** * 浏览器地址栏输入http://localhost:8080/hello会调用servlet的doGet()方法 * @param request 请求对象.取得请求的数据(浏览器传过来的数据) * @param response 响应对象.返回浏览器数据放在该对象中 * @throws ServletException * @throws IOException */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //生成动态的内容返回到浏览器显示 // 取得响应的输出流对象 PrintWriter out = response.getWriter(); // 向out输出流对象写内容浏览器就能接收到,并在页面进行显示 out.print("Hello Servlet!"); }
9、web.xml中配置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"> <!--配置Servlet,可以手动配置--> <servlet> <!--Servlet的名称--> <servlet-name>HelloServlet</servlet-name> <!--servlet类的全路径名--> <servlet-class>com.tjetc.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <!--Servlet的名称--> <servlet-name>HelloServlet</servlet-name> <!--外部访问servlet的url,初学者写/开头--> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app>
- 说明:
- <servlet>元素
- 包含<servlet-name>及<servlet-class>,其中<servlet-name>可以使用任意标识符,<servlet-class>是Servlet类的完整类名;
- <servlet-mapping>元素
- 包含<servlet-name>及<url-pattern>,其中<servlet-name>与已经定义的name对应,<url-pattern>是逻辑url,非常非常重要,访问Servlet就使用这个url-pattern
-
10、运行Web应用
-
Tomcat如何找到servlet并实例化的?
第一步:在浏览器地址栏输入访问路径,向服务器发送请求;
第二步:服务器根据访问路径去web.xml文件中和<url-pattern>标签中的虚拟路径进行匹配,匹配成功后,找到已注册的servlet名称;
第三步:根据映射找到对应的servlet名,注意:<servlet-mapping>下的<servlet-name>标签和<servlet>下的<servlet-name>标签中的值必须相同;
第四步:根据servlet名找到全限定类名,即我们自己写的类。
服务器找到全限定类名后,通过反射调用Class对象的newInstance()方法,实例化一个如:HelloServlet对象,注意一定要为HelloServlet提供一个无参的构造方法。同时也创建了servletConfig,里面存放了一些初始化信息(注意:服务器只会创建一次HelloServlet对象,所以servletConfig也只有一个)。
-
11、Servlet的生命周期
servlet家谱
- 二类二接口
- 3加2方法
-
servlet生命周期
package com.tjetc;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
public HelloServlet() {
System.out.println("构造方法HelloServlet()...");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("初始化init(config)有参");
super.init(config);
}
@Override
public void init() throws ServletException {
System.out.println("初始化init()无参");
super.init();
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service()...");
super.service(req, resp);
}
//接收get请求
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet()...");
// int i = 1 / 0;//java.lang.ArithmeticException: / by zero
// doPost(req, resp);
//设置编码
resp.setContentType("text/html;charset=utf-8");
StringBuilder sb=new StringBuilder();
sb.append("<table border='1', cellspacing='0'>");
sb.append("<tr>");
sb.append("<td>序号</td><td>姓名</td><td>年龄</td>");
sb.append("<tr>");
sb.append("</tr>");
sb.append("<td>1</td><td>张三</td><td>19</td>");
sb.append("<tr>");
sb.append("</tr>");
sb.append("<td>2</td><td>李四</td><td>20</td>");
sb.append("</tr>");
sb.append("</table>");
//输出字符串
resp.getWriter().write(sb.toString());
}
//接收post请求
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost()...");
//获取输入流
PrintWriter writer = resp.getWriter();
//把字符串输出到页面中
writer.write("<h1>Hello Servlet i am coming</h1>");
}
@Override
public void destroy() {
System.out.println("destroy()...");
super.destroy();
}
}
各个方法的执行顺序和次数
1、Tomcat启动,各个方法没有执行
2、第一次访问的时候执行顺序:
- HelloServlet的构造方法
- HelloServlet.init初始化方法
- HelloServlet.service()方法
- method = GET
3、第二次以及以后访问的时候执行顺序
- HelloServlet.service()方法
- method = GET
4、执行次数
- 构造方法,初始化方法执行一次
- service()方法 doXXX()执行多次
- 销毁方法destroy()方法执行一次
servlet的特性
- 多线程单实例
- 单例模式:在整个应用运行期间,只有一个实例存在,这就叫做单例模式.省内存.
- 一个url对应一个实例
-
ServletAPI查询地址
- http://tomcat.apache.org/tomcat-9.0-doc/servletapi/index.html
-
Web应用常见的错误
404找不到请求的资源
500代表服务器内部错误
|
页面无法显示:未启动Tomcat
设置响应编码:UTF-8
- response.setContentType(“text/html;charset=UTF-8”);
-
向页面输出
- out=response.getWriter();
- out.println(内容);