浅谈JavaWEB入门必备知识之Servlet入门案例详解

时间:2023-02-24 08:12:40

工欲善其事、必先利其器,想要成为JavaWEB高手那么你不知道servlet是一个什么玩意的话,那就肯定没法玩下去,那么servlet究竟是个什么玩意?下面,仅此个人观点并通过一个小小的案例来为大家详述一下什么是servlet...

个人观点:说白了,servlet就是一个java应用程序、一个运行在服务器上java类,servlet就是java处理web请求的一种机制,它具有独立于平台和协议的特性,可以生成动态的Web页面。再形象点,就是你通过IE等浏览器发送一个http请求后会根据你请求的内容找到相应的serlet类,然后由serlet为你返回一个指定的动态网页。

科学定义:Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

实现过程:

1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet;
3) Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。

好了,废话不多说,如果还不明白的话,就请看我下面的一个案例吧...
我这里通过一个小小的案例来让你彻底的了解一下servlet到底是个啥玩意?它的实现步骤是什么?
案例:Servlet用户登录验证系统

浅谈JavaWEB入门必备知识之Servlet入门案例详解

第一步:开发Login.java(登录界面)

//登录界面
package com.xushouwei.cn;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
        this.doPost(req,res);
    }
    
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        try{
            //解决中文乱码问题
            res.setContentType("text/html;charset=gbk");
            PrintWriter pw=res.getWriter();
            pw.println("<html>");
            pw.println("<head>");
            pw.println("</head>");
            pw.println("<body>");
            pw.println("<h1>用户登录</h1>");
            pw.println("<form action=loginCl method=get>");
            pw.println("用户名:<input type=text name=username><br>");
            pw.println("密码:<input type=password name=pwd><br>");
            pw.println("<input type=submit value=提交><br>");
            pw.println("<input type=reset value=重置><br>");
            pw.println("</form>");
            pw.println("</body>");
            pw.println("</html>");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        
    }
}

第二步:开发LoginCl.java界面(用户处理界面)

//用户验证
package com.xushouwei.cn;
import javax.servlet.http.*;
import java.io.*;
public class LoginCl extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
        this.doPost(req,res);
    }
    
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        try{
            
            //接收用户名和密码 
            String u=req.getParameter("username");
            String p=req.getParameter("pwd");
            //验证
            if(u.equals("xushouwei")&&p.equals("123456"))
            {
                //合法用户
                res.sendRedirect("wel");
            }
            else
            {
                //不合法
                res.sendRedirect("login");//这里写上你要调到的servlet的url
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        
    }
}

第三步:开发Wel.java界面(欢迎界面)

//这是欢迎界面
package com.xushouwei.cn;
import javax.servlet.http.*;
import java.io.*;
public class Wel extends HttpServlet{
    public void doGet(HttpServletRequest req,HttpServletResponse res){
        this.doPost(req,res);
    }
    
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        try{
            
            res.setContentType("text/html;charset=gbk");
            PrintWriter pw=res.getWriter();
            pw.println("<h1>欢迎来到徐守威的主页面!</h1>");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        
    }
}

以上三步每一步都是一个servlet,那么开发servlet有几种方法呢?详情请看这篇文章http://www.cnblogs.com/Jasxu/p/servlet.html

这里我就不在详细说了...

既然我们所需要的servlet都开发好了,那么我们需要一个配置文件web.xml文件(该文件相当于一个手续一样,表明你要去访问那个serlvet)

web.xml文件配置如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

<display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>
  
  <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>com.xushouwei.cn.Login</servlet-class>
  </servlet>
  
   <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  
  <servlet>
    <servlet-name>LoginCl</servlet-name>
    <servlet-class>com.xushouwei.cn.LoginCl</servlet-class>
  </servlet>
  
   <servlet-mapping>
    <servlet-name>LoginCl</servlet-name>
    <url-pattern>/loginCl</url-pattern>
  </servlet-mapping>
  
  
  <servlet>
    <servlet-name>Wel</servlet-name>
    <servlet-class>com.xushouwei.cn.Wel</servlet-class>
  </servlet>
  
   <servlet-mapping>
    <servlet-name>Wel</servlet-name>
    <url-pattern>/wel</url-pattern>
  </servlet-mapping>

</web-app>

以上步骤完成后,编译一下各个java文件生成.class文件类型,下面我们就可以把以上文件部署到tomcat服务器中进行测试了,目录结构如下
浅谈JavaWEB入门必备知识之Servlet入门案例详解

好了,部署好以后我们直接启动tomcat并在浏览器输入:http://localhost:8080/myWebSite/login

验证即可...

以上就是完全利用servlet进行用户验证并进行页面跳转而开发的一个使用入门型的servlet入门案例!

浅谈JavaWEB入门必备知识之Servlet入门案例详解的更多相关文章

  1. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS&sol;Canvas 游戏 meta 详解,html5 meta 标签日常设置 C&num;中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  2. 走进JavaWeb技术世界4:Servlet 工作原理详解

    从本篇开始,正式进入Java核心技术内容的学习,首先介绍的就是Java web应用的核心规范servlet 转自:https://www.ibm.com/developerworks/cn/java/ ...

  3. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  4. 浅谈javaweb三大框架和MVC设计模式

    一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...

  5. Flum入门必备知识

    1.flume概念 flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集.聚集和移动,并以集中式的数据存储的系统. flume目前是apache的一个*项目. flum ...

  6. Vue入门系列(五)Vue实例详解与生命周期

    Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/78 ...

  7. Jmeter&lpar;十六&rpar; - 从入门到精通 - JMeter前置处理器(详解教程)

    1.简介 前置处理器是在发出“取样器请求”之前执行一些操作.如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行.前置处理器最常用于在取样器请求运行前修改其设置,或更新未从响应文本中提取 ...

  8. Jmeter&lpar;二十一&rpar; - 从入门到精通 - JMeter断言 - 上篇(详解教程)

    1.简介 最近由于宏哥在搭建自己的个人博客可能更新的有点慢.断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式.虽然我们的通过响应断言能够完成绝大多数的结果验证工作,但是JM ...

  9. 浅谈JavaWeb架构演变

    一  JavaWeb架构演变 在java架构模式中,我们可以将MVC架构模式抽象为如下结构: 1.View层.View层即UI层,可采用的技术如JSP,Structs,SpringMVC等 2.Con ...

随机推荐

  1. CSS 笔记二(Text&sol;Fonts&sol;Links&sol;Lists)

    CSS Text 1> Text Color used to set the color of the text 2> Text Alignment used to set the hor ...

  2. android 5&period;0 水波纹 实现

    1. 定义一个普通圆角背景的xml; rounded_corners.xml <?xml version="1.0" encoding="utf-8"?& ...

  3. Session丢失的解决办法小结

    最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里.最后使用存储在StateServer中的办法解决了问题. SessionState ...

  4. Palindrome Number 2015年6月23日

    题目: 判断一个数是不是回文数 Determine whether an integer is a palindrome. Do this without extra space. 思路:借助上一道求 ...

  5. NPOI 的使用姿势

    NPOI 正确的使用姿势 主要是需要注意公式和日期类型的单元格的读取. /// <summary> /// 打开指定 Excel 文件 /// </summary> /// & ...

  6. 基于Django rest framework 和Vue实现简单的在线教育平台

      一.基于api前端显示课程详细信息 1.调整Course.vue模块 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

  7. Spring获取实现某接口的所有实例bean

    1.获取 applicationContext,通过ApplicationAware自动注入 2.getBeansOfType.getBeanNamesForType Map<String, I ...

  8. asp&period;net 增加404页面(非302、200)

    由于项目改版,导致产生了许多死链,但是之前的404页面都是在Application_Error中Response.Redicet()到404页面,但是这样子是302跳转,导致搜索引擎认为网页不是死链而 ...

  9. delphi android路径 TPath 文件路径,文件管理

    获取Android相关文档路径 delphi 新路径.文件功能 IOUtils单元,文件路径,文件管理 http://docwiki.embarcadero.com/RADStudio/Berlin/ ...

  10. centos 6&period;8安装java环境

    1.rpm -qa |grep java   查看当前是否有java已经安装了,部分centos系统已经安装了的openjava环境,但是很多项目不熟要求的是要必须是sun的java环境 2.yum ...