Servlet的HelloWorld

 Servlet的HelloWorld
1)创建一个Servlet接口的实现类
public class HelloServlet implements Servlet
2)在web.xml文件中配置和映射这个Servlet 


//配置和映射Servlet
  <servlet>
  //Servlet注册的名字
  <servlet-name>helloServlet</servlet-name>
  //Servlet的全类名
  <servlet-class> com.briup.javaweb.HelloServlet</servlet-class>
  </servlet>


   <servlet-mapping>
   //需要和某一个servlet节点的servlet-name子节点的文本节点一致
   <servlet-name>helloServlet</servlet-name>
   //映射具体的访问路径:/代表当前web应用的根目录
   <url-pattern>/hello</url-pattern>

   </servlet-mapping>




<%@page import="com.briup.javaweb.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
 Person person=new Person();
 System.out.println(person.getInfo());
%>
</body>

</html>


3 Servlet容器:运行Servlet,jsp,Filter等的软件环境。
1)可以来创建Servlet,并调用Servlet的相关生命周期方法
2)Jsp,Filter,Listener,Tag。。。


4 servlet生命周期的方法
1)构造器:第一次请求Servlet时,创建Servlet的实例,调用构造器
这说明Servlet时单实例的
2) init方法:只被调用一次,在创建好实例后立即被调用。用于初始化当前Servlet
3)service:被多次调用 每次请求都会调用service方法实际用于相应请求的
4)destroy:只被调用一次,在当前Servlet所在的WEB应用被卸载前调用用于释放当前Servlet所占用的资源。


5 load-on-startup参数:
1)配置在servlet节点中:
<servlet>
 //Servlet注册的名字
  <servlet-name>secondServlet</servlet-name>
  //Servlet的全类名
  <servlet-class> com.briup.javaweb.SecondServlet</servlet-class>
 //可以指定Servlet被创建的时机
  <load-on-startup>-1</load-on-startup>
  </servlet>
 
 2)load-on-startup:可以指定Servlet被创建的时机 。若为负数,则在第一次请求时被创建
 若为0或正数,则在当前WEB应用被Servlet容器加载时创建实例,且数字越小越早被创建


 6 关于Servlet-mapping
 1)同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以使同一个
 Servlet的注册名
 2)在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式。
 <servlet-mapping>
   <servlet-name>secondServlet</servlet-name>
   <url-pattern>/*</url-pattern>
   </servlet-mapping>


   OR
<servlet-mapping>
   <servlet-name>secondServlet</servlet-name>
   <url-pattern>*.do</url-pattern>
   </servlet-mapping>
 
 注意:一下的既带/又带扩展名的不合法
 <servlet-mapping>
   <servlet-name>secondServlet</servlet-name>
   <url-pattern>/*.action</url-pattern>
   </servlet-mapping>
 
 7 ServletConfig:封装了Servlet的配置信息,并且可以获取ServletContext对象
 1)配置Servlet的初始化参数 且节点必须在load-on-startup 节点的前面 
 <servlet>
  <servlet-name>helloServlet</servlet-name>
  <servlet-class> com.briup.javaweb.HelloServlet</servlet-class>
  <init-param>
  <param-name>user</param-name>
  <param-value>root</param-value>
  </init-param>


  <init-param>
  <param-name>password</param-name>
  <param-value>1230</param-value>
  </init-param>


  <load-on-startup>3</load-on-startup>
  </servlet>
 2)获取初始化参数
 》getInitParameter(String name):获取指定参数名的初始化参数
 》getInitParameterNames():获取参数名组成的Enumeration对象
  String user=servletConfig.getInitParameter("user");
    System.out.println("user"+user);
    Enumeration<String> names=servletConfig.getInitParameterNames();
    while(names.hasMoreElements()){
    String name=names.nextElement();
String value=servletConfig.getInitParameter(name);
System.out.println("^"+name+":"+value);
}

}


3)获取Servlet的配置名称
String servletName=servletConfig.getServletName();
System.out.println(servletName);


8 ServletContext
1)可以由ServletConfig获取
ServletContext servletContext=servletConfig.getServletContext();


2)该对象代表当前WEB应用:可以认为ServletContext是当前WEB应用的一个大管家
可以从中获取到当前WEB应用的各个方面的信息。
①获取当前WEB应用的初始化参数


设置初始化参数:可以为所有的Servlet所获取,而Servlet的初始化参数只用那个Servlet可以获取
<context-param>
  <param-name>driver</param-name>
  <param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>


  方法:
  getInitParameter
  getInitParameterNames
  代码:
  ServletContext servletContext=servletConfig.getServletContext();

String driver=servletContext.getInitParameter("driver");
System.out.println("driver:"+driver);

Enumeration<String> names2=servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name=names2.nextElement();
System.out.println("-->"+name);
}

②获取当前WEB应用的某一个文件在服务器上的绝对路径,而不是部署的路径
getRealPath(String path)
String realPath=servletContext.getRealPath("/nate.txt");
System.out.println(realPath);


③ 获取当前WEB应用的名称:
getContextPath
String contextPath=servletContext.getContextPath();
System.out.println(contextPath);
 
④获取当前WEB应用的某一个文件对应的输入流
getResourceAsStream(String path):path的/为当前的WEB应用的根目录。
InputStream is2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");


⑤ 和attribute相关的几个方法

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页