标签:
Servlet
在webapps目录下,创建一个目录,这个目录必须要按JavaEE结构来创建:
Project
index.html
WEB-INF
web.xml
classes
Lib
放到webapps目录下
放到一个独立的目录下,在server.xml文件中引用:
将上面的项目配置城 :www.inkeeper.com
配置虚拟主机:
<Host name="www.inkeeper.com" appBase="d:/a"
unpackWARs="true" autoDeploy="true">
</Host>
在tomcat中默认的主项目是ROOT
添加完成以后:
启动:
直接点右键运行为:
Filter - 级别最高
Listener级别第二
Servlet级别第三 - 》从这儿开始学习。
上面的这三大组件,都是接口,要求程序员去实现它们。由Tomcat/也叫Servlet容器去实例化这此类。
显示服务器的时间:
JS脚本 : 不能,因为JS运行在客户端面,显示的是客户的时间.
显示服务器的时间,必须要使用java代码。
Servlet是个组件
用于生成动态的页面
接收用户的请求给用户输出响应。
Servlet是Server+Let的组合是指 服务上的小程序。
JDK.chm是 JavaSE开发。
Servlet是JavaSE开发。所以要查另一个套api,且在JDK里面没有Servlet这个类。
查看:
Defines methods that all servlets must implement.定义了一些方法,所有子类,必须要实现这些方法。
A servlet is a small Java program that runs within a Web server. Servlets receive and respond to requests from Web clients, usually across
一个Servlet就是一个Java小程序,它运行在javaweb服务器,如Tomcat。接收响应请求通过客户端 。经常是通过http协议。
HTTP, the HyperText Transfer Protocol. (超文本传输协议 HTML)
HTTP协议 - 文本格式:
请示协议:
GET(请求类型Get|post) /index.html(请示资源) HTTP/1.1 -- >请求首行
Host : www.baidu.com:80 请求头 有很多多的..
...
..
[空行]
请求正文 GET方式这儿没有数据,POST方式这儿才会有数据
响应协议
HTTP/1.1 200 (响应码) OK
响应头
Server:...
空行
正文
HTTP协议是无状态协议
public class OneServlet implements Servlet {
/**
* 此方法 是初始化方法当这个类,被实例化以后,由Tomcat容器来调用这个方 <br>
* 只会被调用一次
*/
@Override
public void init(ServletConfig config) throws ServletException {
System.err.println("初始化了:" + this);
}
/**
* 为用户提供服务的方法,用户每一次调用,都会执行此方法
*/
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 设置响应的类型为
res.setContentType("text/html;charset=UTF-8");
// 获取输出到浏览器的输出流
PrintWriter out = res.getWriter();
String str = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// 输出给
System.err.println("service this:" + this);
out.print("<b>当前的时间是:</b>" + str);
}
@Override
public void destroy() {
// 当Tomcat关闭时,由Tomcat来调用的方法,用于清理某些资源
// 只会被调用一次
System.err.println("destory:" + this);
}
<!-- 配置第一个Servlet -->
<servlet>
<!--声明任意的名称 -->
<servlet-name>one servlet</servlet-name>
<!-- 指定类的名称 -->
<servlet-class>cn.inkeeper.OneServlet</servlet-class>
</servlet>
<!-- 配置如何访问 -->
<servlet-mapping>
<!-- 引用上面的声明的名称 -->
<servlet-name>one servlet</servlet-name>
<!-- 配置访问的url -->
<url-pattern>/one.html</url-pattern>
</servlet-mapping>
http://localhost/helloworld/one.html
实例化时间
默认的所有servlet在项目启动时,不会实例化。
在用户第一次访问时实例化且初始化。
实例化个数:
Servlet默认是单一的实例,由Tomcat通过反射实例化,由Tomcat调用初始化方法。
此方法只会被调用一次:
@Override
public void init(ServletConfig config) throws ServletException {
System.err.println("初始化了:" + this);
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
@Override
public void destroy() {
// 当Tomcat关闭时,由Tomcat来调用的方法,用于清理某些资源
// 只会被调用一次
System.err.println("destory:" + this);
}
两个点:
1:Servlet是单例的。是由Tomcat容器实例化这个类,且由 Tomcat服务器维护这个Serv let的实例。
2:Servlet的生命周期:
Init(ServletCOnfig)
Service(req,resp)
Destory();
配置的方式:
1:声明一个类实现接口
2:将这个类配置到web.xml中去<servlet><servlet-mapping>
3 : 通过<url-pattern>/one 访问的是....../one
用户注册功能:
思想:
1:开发一个注册的页面。<form>
2:在后台接收数据 开发一个Servlet接收用户传递的数据。
<form method="post" action="reg">
<p>请注册</p>
<table>
public class RegiestServlet implements Servlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//1:设置编码类型
req.setCharacterEncoding("UTF-8");
//2:接收用户的参数<input type="text" name="name"/>中的"name"
String name = req.getParameter("name");
String pwd = req.getParameter("pwd");
String sex = req.getParameter("sex");
String major = req.getParameter("major");
//3:显示
res.setContentType("text/html;charset=UTF-8");//设置响应的格式
//获取输出对象
PrintWriter out =
res.getWriter();
out.print("姓名是:"+name+"<hr>");//\n
out.print("密码是:"+pwd+"<hr>");
out.print("性别是:"+sex+"<hr>");
out.print("学历:"+major+"<hr>");
}
<!-- 配置第二个servlet -->
<servlet>
<servlet-name>regServlet</servlet-name>
<servlet-class>cn.inkeeper.RegiestServlet</servlet-class>
</servlet>
<!-- 配置如何访问 -->
<servlet-mapping>
<servlet-name>regServlet</servlet-name>
<url-pattern>/reg</url-pattern>
</servlet-mapping>
<form method="post" action="reg">
<p>请注册</p>
<table>
标签:
原文地址:http://www.cnblogs.com/carsar/p/5515682.html