servlet详细使用步骤和代码案例说明

  发现用servlet的比较少哦,看见老一点的程序员都直接在jsp中直接写代码,比我年轻一点的程序员又直接用的框架struts等。而我呢不喜欢用框架,喜欢自己写代码,而且又有强迫症,一定要把服务器代码和html分开,所以我平时就用ajax和servlet最多,其实会熟练使用servlet还是很有必要的,提升开发效率,代码整洁,了解原理都有很大的帮助,下面就一起来学习回顾servlet的使用。

  servlet详细使用步骤和代码案例说明:

  首先唠叨一下什么是servlet,从最基础最理论的讲一下吧。

  servlet是一个java class;

  servlet是继承自HttpServlet的class;

  不在客户端运行,是在服务端运行,拦截并分发客户端的请求;

  相关介绍:

  --javax.servlet.*:存放于http协议相关的一般性servlet类

  --javax.servlet.http.*:除了继承javax.servlet.* 之外,并且还增加与HTTP协议有关的功能。

  (注意:大家有必要学习一下HTTP协议,因为WEB开发都会涉及到)

  所有的Servlet 都必须实现javax.servlet.Servlet 接口(Interface)。

  若Servlet程序和HTTP 协议无关,那么必须继承javax.servlet.GenericServlet类;

  若Servlet程序和HTTP 协议有关,那么必须继承javax.servlet.http.HttpServlet 类。

  --HttpServlet:提供了一个抽象类用来创建Http Servlet。

  public void doGet()方法:用来处理客户端发出的GET请求

  public void doPost()方法:用来处理POST请求

  --javax.servlet包的接口:

  ServletConfig接口:在初始化的过程中由Servlet容器使用

  ServletContext接口:定义Servlet用于获取来自其容器的信息的方法

  ServletRequest接口:向服务器请求信息

  ServletResponse接口:响应客户端请求

  Filter接口:

  --javax.servlet包的类:

  ServletInputStream类:用于从客户端读取二进制数据

  ServletOutputStream类:用于将二进制数据发送到客户端

  --javax.servlet.http包的接口:

  HttpServletRequest接口:提供Http请求信息

  HttpServletResponse接口:提供Http响应

  Servlet生命周期

  --Servlet生命周期就是指创建Servlet实例后,存在的时间以及何时销毁的整个过程.

  --Servlet生命周期有三个方法

  init()方法:

  service()方法:Dispatches client requests to the protected servicemethod

  destroy()方法:Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.

  --Servlet生命周期的各个阶段

  ----实例化:Servlet容器创建Servlet实例

  ----初始化:调用init()方法

  ----服务:如果有请求,调用service()方法

  ----销毁:销毁实例前调用destroy()方法

  ----垃圾收集:销毁实例

  (正式开始.......)

  1、在eclipse或者Myeclipse里新建Web Project

  2、选择Generate web.xml deployment descriptor

  3、编码前段页面

  登陆页面:



  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.    <script>
  6.    function check(){//判空检测
  7.            var username = document.getElementById("username");
  8.            var password = document.getElementById("password");
  9.            var textnode1 = document.createTextNode("请输入有效的用户名");
  10.            var textnode2 = document.createTextNode("请输入正确的密码");
  11.            if(document.getElementById("p1").hasChildNodes()){
  12.                    document.getElementById("p1").removeChild(document.getElementById("p1").firstChild);
  13.                       }
  14.            if (username.value == ""){
  15.                    document.getElementById("p1").appendChild(textnode1);
  16.            }
  17.            if(document.getElementById("p2").hasChildNodes()){
  18.                    document.getElementById("p2").removeChild(document.getElementById("p2").firstChild);
  19.                       }
  20.            if(password.value == ""){
  21.                    document.getElementById("p2").appendChild(textnode2);
  22.            }
  23.            if(password.value != "" && username.value != "")
  24.            {
  25.                    var login = document.getElementById('loginform');
  26.                    login.submit();
  27.            }
  28.    }
  29.    </script>
  30.   </head>
  31.   
  32.   <body>
  33.     This is my first JSP page. <p/>
  34.     <form action='servletdemo' method='post' id='loginform'>
  35.             用户名:<input type="text" id="username" name="username"><a id="p1" ></a><p/>
  36.             密  码:<input type="password" id="password" name="password"><a id ="p2" ></a><p/>
  37.                 <input type="button" value="登陆">      
  38.             <input type="button" value="注册">
  39.     </form>
  40.   </body>
  41. </html>
复制代码



成功登陆之后的页面:


  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.   </head>
  6.   
  7.   <body>
  8.     This is my second JSP page. <p/>
  9.     <%
  10.     String name = (String)session.getAttribute("username");
  11.     String pass = (String)session.getAttribute("password");
  12.     %>
  13.     welcome <%=name%>!<p/>
  14.     you password is <%=pass%>
  15.   </body>
  16. </html>
复制代码

4、在WebRoot(eclipse中式WebCotent)/WEB-INF/web.xml中添加servlet部署


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd[/url]" id="WebApp_ID" version="3.0">
  3.   
  4.   <display-name>servletTest</display-name>
  5.   
  6.   <welcome-file-list>
  7.     <welcome-file>index.jsp</welcome-file>
  8.   </welcome-file-list>
  9.   
  10.   <servlet>
  11.     <description>This is the description of my J2EE component</description>
  12.     <display-name>This is the display name of my J2EE component</display-name>
  13.     <servlet-name>servletdemo</servlet-name>
  14.     <servlet-class>com.servlet.servletdemo</servlet-class>
  15.   </servlet>
  16.   
  17.   <servlet-mapping>
  18.     <servlet-name>servletdemo</servlet-name>
  19.     <url-pattern>/servletdemo</url-pattern>//此处“/”后的名字和jsp页面中form表单的action保持一致
  20.   </servlet-mapping>
  21.   
  22. </web-app>
复制代码

5、编码servlet处理class


  1. package com.servlet;

  2. import java.io.IOException;
  3. import java.nio.charset.Charset;

  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;

  9. public class servletdemo extends HttpServlet{

  10.     /**
  11.      *
  12.      */
  13.     private static final long serialVersionUID = 1L;

  14.     //初始化
  15.     public void init() throws ServletException {
  16.         System.out.println("我是init()方法!用来进行初始化工作");
  17.     }
  18.    
  19.     //处理GET请求
  20.     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  21.         doPost(request, response);
  22.     }
  23.    
  24.     //处理POST请求
  25.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26.         String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
  27.         String password = request.getParameter("password");
  28.         HttpSession session = request.getSession();
  29.         session.setAttribute("username", username);
  30.         session.setAttribute("password", password);
  31.         response.sendRedirect("/servletTest/success.jsp");
  32.         System.out.println("用户名:"+username);
  33.         System.out.println("密码:"+password);
  34.     }
  35.    
  36.     //销毁实例
  37.     public void destroy() {
  38.         super.destroy();
  39.         System.out.println("我是destroy()方法!用来进行销毁实例的工作");
  40.     }
复制代码

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.    <script>
  6.    function check(){//判空检测
  7.            var username = document.getElementById("username");
  8.            var password = document.getElementById("password");
  9.            var textnode1 = document.createTextNode("请输入有效的用户名");
  10.            var textnode2 = document.createTextNode("请输入正确的密码");
  11.            if(document.getElementById("p1").hasChildNodes()){
  12.                    document.getElementById("p1").removeChild(document.getElementById("p1").firstChild);
  13.                       }
  14.            if (username.value == ""){
  15.                    document.getElementById("p1").appendChild(textnode1);
  16.            }
  17.            if(document.getElementById("p2").hasChildNodes()){
  18.                    document.getElementById("p2").removeChild(document.getElementById("p2").firstChild);
  19.                       }
  20.            if(password.value == ""){
  21.                    document.getElementById("p2").appendChild(textnode2);
  22.            }
  23.            if(password.value != "" && username.value != "")
  24.            {
  25.                    var login = document.getElementById('loginform');
  26.                    login.submit();
  27.            }
  28.    }
  29.    </script>
  30.   </head>
  31.   
  32.   <body>
  33.     This is my first JSP page. <p/>
  34.     <form action='servletdemo' method='post' id='loginform'>
  35.             用户名:<input type="text" id="username" name="username"><a id="p1" ></a><p/>
  36.             密  码:<input type="password" id="password" name="password"><a id ="p2" ></a><p/>
  37.                 <input type="button" value="登陆">      
  38.             <input type="button" value="注册">
  39.     </form>
  40.   </body>
  41. </html>
复制代码



成功登陆之后的页面:


  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.   </head>
  6.   
  7.   <body>
  8.     This is my second JSP page. <p/>
  9.     <%
  10.     String name = (String)session.getAttribute("username");
  11.     String pass = (String)session.getAttribute("password");
  12.     %>
  13.     welcome <%=name%>!<p/>
  14.     you password is <%=pass%>
  15.   </body>
  16. </html>
复制代码

4、在WebRoot(eclipse中式WebCotent)/WEB-INF/web.xml中添加servlet部署


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd[/url]" id="WebApp_ID" version="3.0">
  3.   
  4.   <display-name>servletTest</display-name>
  5.   
  6.   <welcome-file-list>
  7.     <welcome-file>index.jsp</welcome-file>
  8.   </welcome-file-list>
  9.   
  10.   <servlet>
  11.     <description>This is the description of my J2EE component</description>
  12.     <display-name>This is the display name of my J2EE component</display-name>
  13.     <servlet-name>servletdemo</servlet-name>
  14.     <servlet-class>com.servlet.servletdemo</servlet-class>
  15.   </servlet>
  16.   
  17.   <servlet-mapping>
  18.     <servlet-name>servletdemo</servlet-name>
  19.     <url-pattern>/servletdemo</url-pattern>//此处“/”后的名字和jsp页面中form表单的action保持一致
  20.   </servlet-mapping>
  21.   
  22. </web-app>
复制代码

5、编码servlet处理class


  1. package com.servlet;

  2. import java.io.IOException;
  3. import java.nio.charset.Charset;

  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;

  9. public class servletdemo extends HttpServlet{

  10.     /**
  11.      *
  12.      */
  13.     private static final long serialVersionUID = 1L;

  14.     //初始化
  15.     public void init() throws ServletException {
  16.         System.out.println("我是init()方法!用来进行初始化工作");
  17.     }
  18.    
  19.     //处理GET请求
  20.     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  21.         doPost(request, response);
  22.     }
  23.    
  24.     //处理POST请求
  25.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26.         String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
  27.         String password = request.getParameter("password");
  28.         HttpSession session = request.getSession();
  29.         session.setAttribute("username", username);
  30.         session.setAttribute("password", password);
  31.         response.sendRedirect("/servletTest/success.jsp");
  32.         System.out.println("用户名:"+username);
  33.         System.out.println("密码:"+password);
  34.     }
  35.    
  36.     //销毁实例
  37.     public void destroy() {
  38.         super.destroy();
  39.         System.out.println("我是destroy()方法!用来进行销毁实例的工作");
  40.     }
复制代码

(文章来源:http://www.nei-mao.com/


  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.    <script>
  6.    function check(){//判空检测
  7.            var username = document.getElementById("username");
  8.            var password = document.getElementById("password");
  9.            var textnode1 = document.createTextNode("请输入有效的用户名");
  10.            var textnode2 = document.createTextNode("请输入正确的密码");
  11.            if(document.getElementById("p1").hasChildNodes()){
  12.                    document.getElementById("p1").removeChild(document.getElementById("p1").firstChild);
  13.                       }
  14.            if (username.value == ""){
  15.                    document.getElementById("p1").appendChild(textnode1);
  16.            }
  17.            if(document.getElementById("p2").hasChildNodes()){
  18.                    document.getElementById("p2").removeChild(document.getElementById("p2").firstChild);
  19.                       }
  20.            if(password.value == ""){
  21.                    document.getElementById("p2").appendChild(textnode2);
  22.            }
  23.            if(password.value != "" && username.value != "")
  24.            {
  25.                    var login = document.getElementById('loginform');
  26.                    login.submit();
  27.            }
  28.    }
  29.    </script>
  30.   </head>
  31.   
  32.   <body>
  33.     This is my first JSP page. <p/>
  34.     <form action='servletdemo' method='post' id='loginform'>
  35.             用户名:<input type="text" id="username" name="username"><a id="p1" ></a><p/>
  36.             密  码:<input type="password" id="password" name="password"><a id ="p2" ></a><p/>
  37.                 <input type="button" value="登陆">      
  38.             <input type="button" value="注册">
  39.     </form>
  40.   </body>
  41. </html>
复制代码



成功登陆之后的页面:


  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

  2. <!DOCTYPE HTML>
  3. <html>
  4.   <head>
  5.   </head>
  6.   
  7.   <body>
  8.     This is my second JSP page. <p/>
  9.     <%
  10.     String name = (String)session.getAttribute("username");
  11.     String pass = (String)session.getAttribute("password");
  12.     %>
  13.     welcome <%=name%>!<p/>
  14.     you password is <%=pass%>
  15.   </body>
  16. </html>
复制代码

4、在WebRoot(eclipse中式WebCotent)/WEB-INF/web.xml中添加servlet部署


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd[/url]" id="WebApp_ID" version="3.0">
  3.   
  4.   <display-name>servletTest</display-name>
  5.   
  6.   <welcome-file-list>
  7.     <welcome-file>index.jsp</welcome-file>
  8.   </welcome-file-list>
  9.   
  10.   <servlet>
  11.     <description>This is the description of my J2EE component</description>
  12.     <display-name>This is the display name of my J2EE component</display-name>
  13.     <servlet-name>servletdemo</servlet-name>
  14.     <servlet-class>com.servlet.servletdemo</servlet-class>
  15.   </servlet>
  16.   
  17.   <servlet-mapping>
  18.     <servlet-name>servletdemo</servlet-name>
  19.     <url-pattern>/servletdemo</url-pattern>//此处“/”后的名字和jsp页面中form表单的action保持一致
  20.   </servlet-mapping>
  21.   
  22. </web-app>
复制代码

5、编码servlet处理class


  1. package com.servlet;

  2. import java.io.IOException;
  3. import java.nio.charset.Charset;

  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import javax.servlet.http.HttpSession;

  9. public class servletdemo extends HttpServlet{

  10.     /**
  11.      *
  12.      */
  13.     private static final long serialVersionUID = 1L;

  14.     //初始化
  15.     public void init() throws ServletException {
  16.         System.out.println("我是init()方法!用来进行初始化工作");
  17.     }
  18.    
  19.     //处理GET请求
  20.     public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
  21.         doPost(request, response);
  22.     }
  23.    
  24.     //处理POST请求
  25.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26.         String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"utf-8");
  27.         String password = request.getParameter("password");
  28.         HttpSession session = request.getSession();
  29.         session.setAttribute("username", username);
  30.         session.setAttribute("password", password);
  31.         response.sendRedirect("/servletTest/success.jsp");
  32.         System.out.println("用户名:"+username);
  33.         System.out.println("密码:"+password);
  34.     }
  35.    
  36.     //销毁实例
  37.     public void destroy() {
  38.         super.destroy();
  39.         System.out.println("我是destroy()方法!用来进行销毁实例的工作");
  40.     }
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值