Servlet相关-JavaWeb开发

1.实现Servllet的方式 (由我们自己来写)  
      三种方式
  • 实现javax.servlet.Servlet接口
  • 继承javax.servlet.GenericServlet类
  • 继承 javax.servlet.http.HttpServlet类
  通常继承HttpServlet类来完成我们Servlet。 
特点:单例、线程不安全、效率高
         自己编写,服务器实例化,调用方法
实现五大方法。。。
//实现Servlet接口,,需要实现五个方法
public class Aservlet implements Servlet{
//一开始就被加载
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init run...");
}

@Override
public ServletConfig getServletConfig() {
System.out.println("getServletConfig run...");
return null;
}

@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service run...");
}

@Override
public String getServletInfo() {
System.out.println("getServletInfo run...");
return null;
}
//服务器关闭时自动执行方法
@Override
public void destroy() {
System.out.println("destroy run...");
}
}
2.一般的servlet都是继承HttpServlet类
   (重写doGet和doPost方法)
servlet的线程安全:一个类型 的servlet只有一个实例对象,servlet工作效率很高,但是它不是线程安全的。
    为了避免非线程安全问题。
  • 不要在servlet中创建成员,创建局部变量即可!
  • 可以创建无状态成员。
  • 可以创建有状态的成员,但状态必须为只读的!(可以get,决不能set)
3.servlet的web.xml配置

 Tomcat:(原理:)使用dom4j解析xml,得到servlet类名字符串,反射得到类,执行类中的方法
<servlet>
<servlet-name>Cservlet</servlet-name>
<servlet-class>com.test.myservlet.CServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Cservlet</servlet-name>
<url-pattern>/Cservlet</url-pattern>
</servlet-mapping>
 
4.ServletContext   (重要)
 一个项目只有一个ServletContext对象!    可以在n多个Servlet中获取这个唯一的对象,,使用它可以给多个Servlet传递数据!
与天地同寿!!!    这个对象在Tomcat启动时创建,Tomcat关闭时销毁!!
ServletConfig  . getServletContext();获取对象(唯一)
  • ServletConfig#getServletContext();
  • GenericServlet#getServletContext();
  • HTTPSession#getServletContext();
  • ServletContextEvent#getServletContext();
JavaWeb四大域对象之一。 
所有域对象都有存取数据的功能,域对象内部有一个Map,用来储存数据,下面是ServletContext对象用来操作数据的方法:
  • void setAttribute(String name ,Object value);   用来储存一个对象,也可以称为储存一个域属性。name相同时会覆盖之前的。同Map  。
  • Object getAttribute(String name);   获取名为name的域属性。                                                                                                                                                                                String value=(String)servletContext.getAttribute(“name”);  注意返回值类型是Object,必要时强转一下类型。
  • void removeAttribute(String name);     移除
  • Enumeration getAttributeNames();   获取所有域属性的名称(相当于Map中的key)

5.ServletContext获取资源
    .getRealPath(“/index.jsp”);获取真实路径(带有盘符的路径);
  InputStream input = this.getServletContext().getResouceAsStream(“/index.jsp”); 获取资源路径再创建输入流对象。。
  Set <String> paths =  this.getServletContext. getResourcePaths(“/WEB-INF”);  获取路径下所有资源的路径。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值