关于web技术的学习

Servlet

1Tomcat的目录结构

2:发布第一个项目

   在webapps目录下,创建一个目录,这个目录必须要按JavaEE结构来创建:

   Project

      index.html

      WEB-INF

          web.xml

          classes

          Lib

1:发布的方式1

  放到webapps目录下

2:发布方式2

   放到一个独立的目录下,在server.xml文件中引用:

   

3:独立的配置文件

4:配置虚拟主机

 将上面的项目配置城 :www.inkeeper.com

配置DNS

配置虚拟主机:

   <Host name="www.inkeeper.com"  appBase="d:/a"

            unpackWARs="true" autoDeploy="true">

        </Host>

tomcat中默认的主项目是ROOT

  

3:Eclipse集成

步1:添加tomcat服务器

添加完成以后:

步2:添加一个项目-服务器项目

启动:

  

4:在Eclipse中开发第一个HelloWordweb项目

步1:创建web项目

步2:查看创建的项目的结构

直接点右键运行为:

5JavaWeb开发中的三大组件

Filter - 级别最高

Listener级别第二

Servlet级别第三 - 》从这儿开始学习。

  上面的这三大组件,都是接口,要求程序员去实现它们。由Tomcat/也叫Servlet容器去实例化这此类。

显示服务器的时间:

   JS脚本 : 不能,因为JS运行在客户端面,显示的是客户的时间.

   显示服务器的时间,必须要使用java代码。

6Servlet

   Servlet是个组件

   用于生成动态的页面

   接收用户的请求给用户输出响应。

   ServletServer+Let的组合是指 服务上的小程序。

1:查看Servlet的api

JDK.chmJavaSE开发。

ServletJavaSE开发。所以要查另一个套api,且在JDK里面没有Servlet这个类。

查看:

   

javax.servlet
Interface 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协议是无状态协议

   

 

 

步1:开发一个类实现接口

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);

}

步2:将它配置到web.xml中

<!-- 配置第一个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>

步3:访问

http://localhost/helloworld/one.html

7Servlet的访问过程

8Servlet的实例化时间和实例化个数

实例化时间

   默认的所有servlet在项目启动时,不会实例化。

   在用户第一次访问时实例化且初始化。

实例化个数:

Servlet默认是单一的实例,由Tomcat通过反射实例化,由Tomcat调用初始化方法。

     

9Servlet的生命周期方法

生命周期的初始化方法 ,必须要叫以下的名称,必须要接收以下类型的参类:

此方法只会被调用一次:

@Override

public void init(ServletConfig config) throws ServletException {

System.err.println("初始化了:" + this);

}

以下是生命周期中提供服务的方法,用户每一次请求服务器,都会调用这个方法 :

@Override

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

当Tomcat关闭时,由Tomcat来调用的方法,用于清理某些资源 - 也只会执行次

@Override

public void destroy() {

// Tomcat关闭时,由Tomcat来调用的方法,用于清理某些资源

// 只会被调用一次

System.err.println("destory:" + this);

}

10:通过上面的讲解

两个点:

   1Servlet是单例的。是由Tomcat容器实例化这个类,且由 Tomcat服务器维护这个Serv let的实例。

   2Servlet的生命周期:

      Init(ServletCOnfig)

      Service(req,resp)

      Destory();

配置的方式:

     1:声明一个类实现接口

     2:将这个类配置到web.xml中去<servlet><servlet-mapping>

     3 : 通过<url-pattern>/one 访问的是....../one

11:快速示例

用户注册功能:

思想:

   1:开发一个注册的页面。<form>

   2:在后台接收数据 开发一个Servlet接收用户传递的数据。

步1:开发注册的页面

<form method="post" action="reg">

<p>请注册</p>

<table>

步2:开发Servlet接收用户的注册

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>");//

out.print("密码是:"+pwd+"<hr>");

out.print("性别是:"+sex+"<hr>");

out.print("学历:"+major+"<hr>");

}

步3:配置

<!-- 配置第二个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>

原文地址:https://www.cnblogs.com/carsar/p/5515682.html