Servlet的概述
什么是Servlet?;
Servlet是在服务器端的一个小的java程序,接收和相应从客户端发送的请求.
Servlet的作用:
处理来自客户端的请求,并且对请求做出相应的响应。
使用Servlet :(Servlet的简单案例:即入门)
* 编写一个类实现Servlet的接口。
public class servletTest01 implements Servlet{
@Override
public void service(ServletRequest request ,ServletResponse response)throws ServletException ,IOException{
//System.out.println(" ");
response.getWriter().println("hello Servlet...");
}
}
【配置Servlet】到WEB服务器。(在WEB-INF目录下的web.xml中配置)
如果创建的时候就是创建的servlet文件WEB项目自动配置;
<!--配置Servlet -->
<servlet>
<!--Servlet的名称-->(可以自定义)
<servlet-name>ServletTest01</servlet-name>
<servlet-class>文件的目录(可在类名右键复制路径名)</servlet-class>
</servlet>
<!--配置Servlet的映射-->
<servlet-mapping>
<!--Servlet的名称-->(必须和上一个一致)
<servlet-name>ServletTest01</servlet-name>
<url-pattern>/servletTest01</url-pattern>(可以自定义但是跳转到页面必须填写这个名)
</serlet-mapping>
【Servlet】的应用(登录其他的雷同)
分析: 1、设计一个登录页面。
2、在登录页面上点击登录按钮提交到Servlet
3、编写Servlet在Servlet中接收参数。
4、调用业务层去数据库进行查询操作。(Servlet-->servlce层--->dao层(查询数据库返回数据利用Utils包))(domain层)。
5、根据处理结果做出相应。
代码实现思路:
准备工作:1、引入jar包(mysql,c3p0,dbutils等)、创建数据库。
2、创建包和类
3、创建一个工具类JDBCUtils
4、编写Servlet,Service,Dao.
【Servlet的生命周期的】(比较重要的)
生命周期:
指的是一个对象从创建到销毁的过程。
Servlet的生命周期:即Servlet对象从创建到销毁的过程。
客户端第一次访问该Servlet的时候创建一个Servlet的对象,那么Serlet中的init的方法就会执行,
任何一次从客户端发送的请求,那么服务器创建一个新的线程执行Servlet中的service方法为这次请求服务。
service方法的内部根据请求的方式不同调用不同的doxxxxx的方法,当Servlet从服务器中移除或者关闭服务器的时候Servlet对象就会被销毁,
destroy的方法就会执行。
WEB开发中的路径问题(重要)
相对路径: 不是以/开始的路径。
*localhost:8080/项目名/文件名(Servlet、.html)
绝对路径:
通常都是/开始的路径.
带工程名的路径(客户端的路径):
不带工程名的路径(服务器端路径):
【页面五秒钟跳转eg:代码实现】达到的目的:网站登陆成功后,隔5秒钟后跳转到成功的页面。
分析:首先在登录成功后的代码的地方设置响应头 然后在编写一个成功后跳转的页面。
//解决代码乱码的问题响应
response.setContentType("text/html;charset=utf-8");
response.Writer().println("<h1>登录成功!页面将在5秒后跳转</h1>")
response.setHeader("Refresh","url= 要跳转的页面路径");
}
}
步骤2:
在页面hxml文件中编写跳转时间倒计时;5、4、3、2、1<技术>标签设置头信息<meta>标签
<!DOCTYPE html>
<html>
<head>
<meat charset="utf-8">
<meat http-equiv="Refresh"content="5; url= 登录成功的.html">
<script type="text/javascript" src="/WEB/js/jquery-1.11.3.min.js"></script>
<title>Insert title here<title>
<script type="text/javascript">
$(function(){
setInterval("changeTime()",1000);
})
var i =5;
function changeTime(){
//获得id为 s1的元素;
i--;
$("#s1").html(1);
}
</script>
</head>
<h1>登录成功!!!页面将在<span id="s1">5</span>秒后跳转!</h1>
</body>
</html>
【ServletConfig】(了解即可)(获得初始化参数)
【ServletContext】(Servlet中全部的内容ServletContext都了解.)(被多个用户共享)【域对象】
ServletContext的作用和用途; 保存全局性信息和数据:
网站的访问次数:
聊天室:
概述(域对象):
ServletContext:一个WEB应用只有一个ServletContext对象.服务器启动的时候,服务器为每个WEB工程创建一个属于自己项目的ServletContext对象.
服务器关闭的时候或者项目从服务器中移除ServletContext才会被销毁.如果将值保存在ServletContext中.值就有一个作用的范围.所以这个对象称为”域对象”.
我们可以使用这个对象存取数据,用这个对象存取的数据可以在整个WEB应用中获得。
可以使用如下方法存取数据(域对象相关的方法)
ServletContext对象的作用是在整个Web应用的动态资源之间共享数据!
例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。
方法名: 描述:
setAttribute(String name, Object object) 向ServletContext中存储数据
getAttribute(String name) 从ServletContext中取数据
removeAttribute(name) 从ServletContext中移除数据
如何获取sevletContext对象
ServletConfig # getServletContext();
GenericServlet # getServletContext();
HttpServlet # getServletContext();
HttpSession # getServletContext();【这里将在Session里面介绍】
ServletContextEvent # getServletContext()【这里不多介绍】
在Servlet中获取ServletContext对象:
在 void init(ServletConfig config)中: ServletContext context= config.getServletContext();
ServletConfig类的 getServletContext() 方法可以用来获取ServletContext对象;
在GenericeServlet或HttpServlet中获取ServletContext对象:【不常用】
ServletContext;用法API
1.获得文件的MIME的类型. -- 文件上传和下载.
String 类型 getMimeType(String file)
2.获得全局初始化参数:
3.作为域对象存取数据:(*常用*)
void 类型 setAttribute(String name, Object object) 向ServletContext中存储数据
void 类型 getAttribute(String name) 从ServletContext中取数据
Object 类型 removeAttribute(name)
4.读取WEB项目的文件:(***)
inputStream 类型 getResourceAsStream(String path)
String 类型 getRealPath(String path)