MVC设计模式:
M:Model ,模型 : 一个功能,使用JavaBean实现;
V: View , 视图: 用于展示,以及与用户进行交互。使用 html ,js , css ,jsp 等前端技术;
C: Controller , 控制器: 接收请求,将请求跳转到模型进行处理; 模型处理完毕后, 再将结果集返回给请求处; 一般使用Servlet 实现控制器;
Servlet:
Java类必须符合一定的规范:
a、必须继承 javax.servlet.http.HttpServlet
b、重写其中的 doGet() 或者 doPost() 方法
doGet() : 接收并处理所有get提交方式的请求;
doPost():接收并处理所有post提交方式的请求;
Servlet要想使用,必须配置:
Servlet2.5:web.xml
Servlet3.0: @WebServlet
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
1、手写创建Servlet;
步骤:1、编写一个类,继承HttpServlet
2、重写doGet()、doPost() 方法
3、编写 web.xml 中的 servlet 映射关系
2、借助Eclipse 快速生成Servlet;
新建Servlet 类,即可;
Servlet3.0: @WebServlet
Servlet3.0,与Servlet2.5 的区别:
Servlet3.0不需要再web.xml 中配置;但是需要在 Servlet 类的定义处之上 编写注解;
@WebServlet("url-pattern的值");
匹配流程:请求地址与 @WebServlet 中的值进行匹配,如果匹配成功,那么 说明请求的就是该注解所对应的类
项目根目录
例如:WebContent ,src(所有的构建路径 source folder)
WebContent中有一个文件 index.jsp
src 中有一个Servlet. java
如果:index.jsp中请求<a href="abc">...</a>,则寻找范围:既会在src 根目录中寻找,也会在WebServlet根目录中寻找;
如果:index.jsp中请求<a href="a/abc">...</a>,则寻找范围:既会在src 根目录或者WebContent 中寻找 a目录,找到之后,再在a目录中找 abc 文件;
Servlet 生命周期
1、加载
2、初始化:init( ); 该方法会在 Servlet 被加载并实例化以后,执行;
a、默认第一次访问 Servlet 时会访问,并执行(只执行这一次)
b、可以修改默认 Tomcat 启动时自动执行
i、Servlet2.5:web.xml
<servlet>
....
<load-on-startup>1</load-on-startup>
</servlet>
其中“1”代表第一个;
ii、servlet3.0
@WebServlet( value="/WelcomeServlet",loadOnStartup=1 )
3、服务:service( );-> deGet( ) ; doPost( ) ;
4、销毁:destory( ); Servlet 被系统回收时执行 destory 方法;
5、卸载
init(); //第一次访问Servlet 时会被执行(只执行一次)
service(); // doGet(); doPost(); 调用几次,则执行几次
destory(); //关闭 tomcat 服务时,执行一次
Servlet API
由两个软件包组成:对应于Http协议的软件包、对应于除了HTTP协议以外的其他软件包即Servlet , API 可以适用于任何 通信协议;
Servlet继承关系
ServletConfig :接口
ServletContext getServletContext(); //获取Servlet上下文对象 ->application
String getInitParamrter(String name); //在当前Servlet范围内,获取名为name的参数值(初始化参数)
a、ServletContext 中常见的方法(application)
String getContextPath(); //获取相对路径
String getRealPath(); //获取绝对路径
setAttribute();
getAttribute();
String getInitParameter(String name); //在当前Web容器范围内,获取名为 name 的参数值(初始化参数)
Servlet3.0 方式,给当前 Servlet 设置初始值:
@WebServlet(value="/welcomeServlet",loadOnStartup=1,initParams={@WebInitParam(name="servletName",value="servletValue")})
// 次注解只隶属于一个具体的 Servlet, 因此无法为这整个 Web 容器设置初始化参数;
HttpServletRequest 中的方法:(同request):setAttribute(),getCookies(),getMethod();
HttpServletResponse 中的方法:(同response);