JavaWeb开发中Servlet是属于控制层最底端的部分的 ,也就是MVC c的最底层。
他往往用来处理请求的。他的外一层就是View、他的一层就是Service(Servlet往往调用他做逻辑判断的操作)
原始的Servlet的生命周期
servlet在第一次访问的时候就会被初始化
servlet对象一旦被创建就会驻留在内存中,当服务器关闭或者web应用被移除的时候servlet对象才销毁
1:当servlet被创建的时候那么 servlet就会被初始化 调用init方法
2:任何请求来自客户端,service方法就会被自动调用
3:当servlet从服务器被移除的时候 distroy方法将会被调用
如下是一个原始的Servlet代码(这并不是现在开发一贯的做法,请往下看)
import javax.servlet.*;
class FirstServlet
extends GenericServlet {
public void
service(ServletRequest request, ServletResponse response)
throws ServletException, java.io.IOException
{
response.getWriter().write("hello
servlet");
}
}
ServletConfig
getServletConfig 方法 用来获得servlet的启动信息,和getServletInfo方法 可以活的servlet的基本信息,和关于它自己的一些信息,例如作者,版本,版权等
为Servlet设置初始参数要在web.xml中配置(只对当前servlet有效)
如下是在Web.xml中为当前servlet配置初始化参数的。
<servlet>
<servlet-name>ServletConfigDemo</servlet-name>
<servlet-class>
cn.itcast.servlet.ServletConfigDemo </servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>encoding2</param-name>
<param-value>utf-9</param-value>
</init-param>
</servlet>
ServletCofig对象可以通过this.getServletConfig来获得,因为在父类中已经在获得了ServletConfig对象;也可以servletconfig对象可以通过父类的init方法内穿过来的config对象获取
public void init(ServletConfig config) throws ServletException { this.config =
config; this.init(); } public ServletConfig getServletConfig()
{ return config; }
ServletContext
通常我们称ServletContext叫Application对象 。也叫域对象
Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回
通常获得ServletContext的方法是直接getservletcontext
因为在父类中已经定义了这样的方法,子类直接继承使用
ServletContext对象的引用。getServletContext().getInitParameter("a")
的方式获得web应用的初始化参数
我们还可以为整个web应用配置初始化参数
Request & Response
基本servlet 中service的方法的request 和 response 对象分别是
RequestFacade 和 ResponseFacade 这个类是Tomcat中的类
他继承自HttpServletRequest而 HttpServletRequest 又继承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL(); 获得URl
request.getHeader("accept-encoding"); 获得支持的压缩格式
request.getHeader("referer"); 获得来自哪里(防盗链)
request.getInputStream(); 获得消息体
request.getParameter("name") 获得参数
如下是现代开发中常用的Servlet
public class
UpLoadServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
}
public void
doPost(HttpServletRequest request, HttpServletResponse
response)
throws
ServletException, IOException {
doGet(request,
response);
}
}
扩展:
m(model)模型,代表的是数据库层,通常用到的是:oracle、db2、mysql等sql知识;
v(view)视图,代表的是页面(相关),通常用到的是:html5、jsp,js等页面知识;
c(Controller)控制,代表的控制器,通常用到一些框架知识,如ssh(struts,spring,hibernate)。
备注:mvc实际上是一个很宽泛的内容,根据用到的技术不同,需要实现的业务逻辑不一样,所以灵活开发配置即可。