一、什么是servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
总结:
Servlet就是sun公司开发动态web的一门技术
(1)Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个步骤:
a.编写一个类,实现Servlet接口
b.把开发好的lava类部署到web服务器中。
把实现了Servlet接口的Java程序叫做,Servlet
二、Mapping问题
(1)一个servlet指定一个映射路径
(2)一个servlet可以指定多个映射路径
(3)一个servlet可以指定通用映射路径(不建议使用)
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
(4)指定一些后缀或前缀等等。。。。
如下代码中的do就是指定后缀(后缀可以任意指定)
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
(5)默认请求路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
(6)优先级问题
指定了固有的映射路径的优先级高,如果找不到就会走默认的请求处理;
三、ServletContext
(1)共享数据
在一个Java类中创建数据
ServletContext context = this.getServletContext();
String username = "李锋";
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
context.setAttribute("username",username);
在另一个Java类中接收数据,实现数据共享
ServletContext context = this.getServletContext();
String str = (String)context.getAttribute("username");
//resp.setContentType("text/html");
//resp.setCharacterEncoding("UTF-8");
注释行实现操作防止页面的文字出现乱码
resp.getWriter().print(str);
(2)获取初始化参数
设置初始化参数
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:myredis</param-value>
</context-param>
获取参数
ServletContext context = this.getServletContext();
String url =(String)context.getInitParameter("url");
resp.getWriter().print(url);
(3)请求转发
ServletContext context = this.getServletContext();
context.getRequestDispatcher("/gp").forward(req,resp);
//引号中为需要转发的页面路径
(4)读取资源文件
InputStream is = this.getServletContext().getResourceAsStream("/com/lifeng/servlet/dbcom");
//此处信号中为文件的相对路径
Properties prop = new Properties();
prop.load(is);
//String user = prop.getProperty("username");
//String password = prop.getProperty("password");
resp.getWriter().print(user+","+password);
//注释为文件中的内容
四、Servlet的生命周期
1.加载web.xml文件。
2.通过构造函数创建servlet对象。
3.通过init方法初始化servlet。
4.通过service,或者doGet、doPost提供服务。
5.在重启或关闭时自动对servlet进行销毁。