Servlet
servlet是小型服务器语言,使用它可以处理前台传递来的信息,servlet进行处理后在响应给前台,其中servlet起到了关键性的作用。前端输入的信息可以持久化的存储在数据库中,并且可以进行信息的校验。
配置文件
一般servlet的配置信息是在web.xml中,在项目加载时会加载web.xml文件,这是web.xml的servlet会加载到我们项目中去。那么我们应该怎么去配置呢。在web.xml文件中会有<servlet>标签和<servlet-mapping>标签,其中<servlet>标签是帮助我们找到servlet对应的实类,而<servlet-mapping>则是通过访问的url来映射到我们servlet的实类中去。位置在:<web-app>标签里面一般书写格式是:
<!--servlet的实类标签--> <servlet> <servlet-name>name</servlet-name> <servlet-class>类的全路径</servlet-class> </servlet> <!--servlet的映射标签--> <servlet-mapping>. <!--寻找对应的servlet的实类标签--> <servlet-name>name</servlet-name> <!--通过访问到url来进行关联--> <url-pattern>url</url-pattern> </servlet-mapping>
生命周期
初始化>>>>运行>>>>销毁
init>>>>>service>>>>destory
初始化:是指servlet的第一次调用则是给servlet初始化的过程,这个动作是服务器完成的。
它的调用有两种方式:
第一种:服务器启动时让servlet初始化(需要手动配置)
<!--设置其其级别可以是2,3,4,5等 数字越小级别越高--> <load-on-startup>2</load-on-startup>
第二种: 是这个servlet类别调用时则会执行初始化方法,整个过程不要我们配置。
运行:
表示服务器进行一系列的操作。即提供的服务。最终都是执行doGet()或doPost(),具体是由请求的方式决定。
销毁 :
一般是服务器关闭时会销毁servlet
创建的方式(两种)
1.实现servlet接口
public class Demo01 implements Servlet { @Override public void destroy() { // 销毁 } @Override public ServletConfig getServletConfig() { // 获取servletConfig对象 return null; } @Override public String getServletInfo() { return null; } @Override public void init(ServletConfig arg0) throws ServletException { // 初始化 } @Override public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException { //服务 服务底层还是调用的doGet或doPost方法 } }
2.继承GenericServlet类或者他的子类
public class Demo1 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 直接使用服务 不需要考虑服务器的初始化和销毁 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response);//简化代码 为了都跳转到doGet方法中 } }
重要方法
ServletConfig getservletConfig 获取它的servlet配置信息
1.获取初始化参数
<servlet> <servlet-name>Demo05</servlet-name> <servlet-class>servlet.Demo05</servlet-class> <init-param>
<!--设置初始化参数--> <param-name>name</param-name> <param-value>zhangsan</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Demo05</servlet-name> <url-pattern>/Demo05</url-pattern> </servlet-mapping>
ServletConfig servletConfig = this.getServletConfig(); String initParameter2 = servletConfig.getInitParameter("name"); System.out.println(initParameter2);
2.获取ServletContext对象
ServletContext servletContext2 = servletConfig.getServletContext();
3.获取servlet的名字
String servletName = servletConfig.getServletName(); System.out.println(servletName);// 即 表示该servlet在xml中的实类对应的名字。
<servlet>
<servlet-name>E</servlet-name>
<servlet-class>servlet.Demo05</servlet-class>
</servlet>
则打印结果为E
ServletContext getservletContext 获取上下文信息
1.获取文件类型
ServletContext servletContext = this.getServletContext(); //判断文件的类型 String type = servletContext.getMimeType("a.txt"); System.out.println(type);
2.获取项目路径
ServletContext servletContext = this.getServletContext(); //getContextPath()获取项目路径 String path = servletContext.getContextPath(); System.out.println(path);
3.获取全局化参数配置
配置全局化参数
<context-param> <param-name>user</param-name> <param-value>root</param-value> </context-param> <context-param> <param-name>password</param-name> <param-value>root</param-value> </context-param>
测试 查询
ServletContext servletContext = this.getServletContext(); Enumeration<String> enumeration = servletContext.getInitParameterNames(); while(enumeration.hasMoreElements()){ String name = enumeration.nextElement(); String value = servletContext.getInitParameter(name); System.out.println(name+" "+value); }