1. 能够理解软件的架构
软件架构介绍
BS: Browser Server 浏览器-服务器模式,客户端使用浏览器访问服务器
CS: Client Server 客户端-服务器端。用户需要在本地电脑上安装客户端软件,来访问服务器
2. 能够理解WEB资源概念
web资源概念:
浏览器能看到的数据都是web资源
资源分类有两种【静态资源和动态资源】
-
静态资源
浏览器访问的资源是服务器上的物理文件(html,css,js,jpg,png) -
动态资源
浏览器访问的资源是服务器运行的代码(java代码)产生的数据
3. 能够理解WEB服务器
概念
web服务器就是运行在高性能计算机上的一个软件
作用
有能力将本地的资源(静态和动态)提供给外界,用户可以通过浏览器访问
4. 能够启动关闭Tomcat服务器
tomcat启动命令
startup.bat
tomcat服务器占用端口号
8080
5. tomcat目录结构介绍【理解】
6. 能够使用Servlet 2.5 配置文件方式和3.0注解开发
配置文件开发
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--目标:配置用户访问的url与DemoServlet映射关系,目的是访问url就找到DemoServlet处理请求与响应
1.定义DemoServlet类全名
2.定义url关联DemoServlet
url定义格式:/资源名字, /代表当前项目内,必须有
浏览器访问:http://localhost:8080/资源目录/资源名字
例子:http://localhost:8080/资源目录/demo
-->
<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.itheima.servlet.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
注解开发
/*
* 注解方式给servlet绑定url
* @WebServlet 注解
* name = "Demo1Servlet", 功能与web.xml中的<servlet-name>一样,这个属性可有可无
* urlPatterns = "/demo",功能与web.xml中的<url-pattern>一样,这个属性必须有
* */
@WebServlet(name = "Demo1Servlet",urlPatterns = "/demo")
public class Demo1Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//给浏览器输出一句“hello servlet3.0”
//1.获取输出流可以输出数据给浏览器
PrintWriter out = response.getWriter();
//2.输出数据
out.write("hello servlet3.0");
}
}
Servlet3.0新特性
-
新增了一些注解,简化的 javaweb 代码开发,可以省略 web.xml 配置文件。
-
支持异步处理:多线程技术。
-
支持可插性特性:书写的代码编译后生成的 class 文件可以直接部署到其他项目自动加载执行。
servlet2.5写的java代码编译后放到服务器上,需要重启服务器
servlet3.0不需要,直接服务器识别
7.Servlet体系结构
8.Servlet映射路径1—配置多个路径
映射路径匹配方式
-
精确匹配
上面讲的都是属于精确匹配,配置的url与用户访问的url要一模一样才可以访问到对应的servlet.
-
模糊匹配
模糊匹配使用一个通配符“*”号,只有这一个通配符。 通配符匹配使用只有2种方式: 1.前缀匹配,必须以“/”开头,以“*”结尾(*前面必须有/) 例子,/abc/*,只要用户访问时/abc/开头都可以匹配到 2.后缀匹配,必须以“*”开头,以“.”扩展名方式结束使用 例子,*.do,只要用户访问时以.do结尾都可以匹配到
注意:
/abc/*/abc
既不属于前缀也不属于后缀,属于精确匹配- 匹配模式一样的时候,匹配相似度越高优先级越高
- 精确匹配优先于模糊匹配
- 都为模糊匹配时,前缀匹配优先级高于后缀匹配
面试题
题目 答案 当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪一个
“/abc/*” 当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪一个
“/abc” 当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配
“/abc/*” 当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet
“/*” 当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配
“/*”
9. 能够说出Servlet生命周期
生命周期
就是一个对象从创建到销毁的过程
/*
* 面试题:
* 1.请说出servlet生命周期相关方法
* init方法
* service方法
* destroy方法
* 2.servlet对象什么时候创建的?
* 默认第一次调用时候创建,服务器创建的
* 3.servlet对象创建了几次?
* 只创建一次,全局唯一,单例模式对象,节省内存
* 4.servlet默认是在第一次访问时创建,能修改为启动时创建?
* 可以的,设置loadOnStartup的值为1~6的一个值代表服务器启动时创建
* 值越小代表越先创建
* */