MVC设计模式
M: model 模型 :一个功能,用JavaBean实现
V: view 视图 :前端来实现
C:controller 控制器 : 接受请求 ,将请求跳转到模型处理;
模型处理完毕后,在将结果返回给 请求处(一般用servlet)
jsp->java(servlet)->jsp
servlet:
java类必须符合一定的规则:
a、必须继承 java.servlet.http.HttpServlet
b、重写其中的doGet方法或doPost方法
servlet 要使用,必须配置
servlet2.5:web.xml
servlet3.0:@WebServlet
项目的根目录:webContent、src
<a href=“WelcomServlet”>所在的jsp是在webcontent目录中,因此 发出的请求 是去请求项目
servlet执行过程
servlet2.5:web.xml
请求-》<url-pattern>-》根据-》<servlet-mapping>中的<servlet-name>
去匹配<servlet>中的<servlet-name>然后寻找到 <servlet-class>,
最终将请求交给
servlet3.0:@WebServlet
在servlet类的的定义智商编写注解@WebServlet("url-pattern的值 ")
匹配流程:请求地址与@WebServlet中的值进行匹配,如果匹配成功,则说明 请求
根路径:webcontent src(所有的构建路径)
例如:
webcontent中有一个文件index.jsp
src中有一个servlet.java
如果:index.jsp中请求 <a href=”abc”>...寻找范围: 即会在scr根目录中找 也会在webcontent根目录中找 abc
如果:index.jsp中请求 <a href=”a/abc”>...寻找范围: 即会在scr或/webcontent根目录中找a 然后在a中找abc
/:
web.xml 中的 /:项目路径
http://localhost:8888/myJsp/sessionDemo/login.jsp
jsp 中:服务器根路径
http://localhost:8888/
构建路径,webcontent:根目录
servlet生命周期:5个阶段
初始化:init(),该方法会在servlet被加载并实例化以后执行
服务:service ()-----doget dopost
销毁:destory() servlet被系统收回时执行
init():
a、 默认第一次访问servlet时会被执行(只执行一次)
b、 可以修改为tomcat启动时执行
启动顺序: load-on-startup
当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;
当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。
正数的值越小,启动该servlet的优先级越高。
如果我们在web.xml中设置了多个servlet的时候,可以使用load-on-startup来指定servlet的加载顺序,
服务器会根据load-on-startup的大小依次对servlet进行初始化。
不过即使我们将load-on-startup设置重复也不会出现异常,服务器会自己决定初始化顺序。
配置load-on-startup后,servlet在startup后立即加载,但只是调用servlet的init()方法,
用以初始化该servlet相关的资源。初始化成功后,该servlet可响应web请求;如未配置load-on-startup,
容器一般在第一次响应web请求时,会先检测该servlet是否初始化,如未初始化,则调用servlet的init()先初始化,
初始化成功后,再响应请求。
配置这个参数,有两个好处:
1、如果初始化过程失败,则容器会提示启动失败,此时我们能够提前知道相关错误;
2、配置该参数相当于将初始化servlet的工作转移到容器启动过程,使得容器只要启动成功后,
就可立即响应web请求。
配置:
i、2.5
<servlet>
<load-on-startup>1</load-on-startup>
</servlet>
ii.3.0
@WebServlet(value="/WelcomServlet",loadOnStartup=1)
service():
doget /dopost调用几次,则执行几次
destroy():
服务器关闭时执行,执行一次
servlet API:
有两个软件包组成:对应于http协议、和非http协议
即servlet API可以适用于任何 通信协议
我们学习的servlet 是位于javax.servlet.http
servlet继承关系
servletConfig:接口
ServletContext getServletContext()获取servlet上下文对象 application是由他产生
String getInitParameter(string name):在当前servlet范围内,获取名叫name的参数值(初始化参数)
ServletContext 中常见方法:(application)
1、 application中的方法
2、 String getInitParameter(string name):在当前web容器范围内,获取名叫name的参数值(初始化参数)
配值:
2.5在web.xml中配置
3.0:在servlet中配局部,在web.xml中配全局(2.5同)
initParams={@WebInitParam(name="serletParaname",value="serletPara value")}
拿值
2.5
//那当前servlet中的
String value = super.getInitParameter("serletParaname");
System.out.println(value);
//拿web容器中的
ServletContext servletContext = super.getServletContext();
String golobValue = servletContext.getInitParameter("globalParam");
System.out.println(golobValue);
3.0:与2.5同