servlet清晰理解

servlet介绍

Servlet看起来像是通常的Java程序。它是JSP的前身,在MVC架构中担任Controller的角色,即控制层。主要进行数据的处理操作和流程的控制,并将有关结果存储到JavaBean中,然后servlet使用请求转发或重定向的方式请求视图中的摸个JSP页面更新显示。

servlet主要用在处理用户请求,获取用户请求的参数,对其处理后,按不同的情况向用户返回不同的JSP视图页面。它的核心价值是进行流程控制。应尽量避免servlet中使用out流输入大量的HTML标记来显示数据,因为这是JSP页面的职责。

servle框架

Servlet的框架是由两个Java包组成:

–javax.servlet包:定义了所有的Servlet类都必须实现或扩展的通用接口和类。

–javax.servlet.http包:定义了采用HTTP协议通信的HttpServlet类。

Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。在Servlet接口中定义了五个方法,其中有三个方法代表了Servlet的生命周期:

–init方法:负责初始化Servlet对象;

在Servlet的生命期中,仅执行一次init()方法。它是在服务器装入Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问Servlet 时装入Servlet。 无论有多少客户机访问Servlet,都不会重复执行init()。

–service方法:负责响应客户的请求;

Service()方法是Servlet程序的入口点,当用户从浏览器调用Servlet时,Servlet将进入该方法。service()包含两个参数,HttpServletRequest对象包含了客户端请求的信息,可以通过该参数取得客户端的一些信息(例如IP地址、浏览器类型等)以及HTTP请求类型(例如GET、HEAD、POST、PUT等);HttpServletResponse对象用于完成Servlet与客户端的交互,通过调用HttpServletResponse. getOutputStream()客户取得向客户端进行输出的输出流,向客户端发送HTML页面。

在HttpServlet的service方法中,首先从HttpServletRequest对象中获取HTTP请求方式的信息,然后再根据请求方式调用相应的方法。例如:如果请求方式为GET,那么调用doGet方法;如果请求方式为POST,那么调用doPost方法。

如果你的Servlet类继承了HttpServlet类,你通常不必实现service方法,因为HttpServlet类已经实现了service方法。

–destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。

destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法。典型的,将Servlet 作为服务器进程的一部分来关闭。

servlet小例子-计算器

1.视图(JSP页面)

用于与用户交互,提交用户请求。

calculation.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
    <h2>请输入表达式</h2>
    <br>
    <form action="<%=request.getContextPath() %>/CalculatorHandler" method="post">
        <input type="text" name="expression"> <input type="submit" value="提交">
    </form>
</body>
</html>

显示处理结果

calculationResult.jsp

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
    <h2>计算结果为:</h2>
    <br>
    <jsp:useBean id="calculator" type="com.kl.bean.Calculator"
        scope="request"></jsp:useBean>
    <jsp:getProperty property="one" name="calculator" />
    <jsp:getProperty property="operator" name="calculator" />
    <jsp:getProperty property="two" name="calculator" />
    =
    <jsp:getProperty property="result" name="calculator" />
</body>
</html>

2.模型(JavaBean)

用于存储数据的对象,主要提供简单的setter和getter方法,不涉及对数据的处理细节。

Calculator.java

package com.kl.bean;

public class Calculator {
    String operator;
    double one,two,result;
    public String getOperator() {
        return operator;
    }
    public Calculator() {
        super();
    }
    public Calculator(String operator, double one, double two, double result) {
        super();
        this.operator = operator;
        this.one = one;
        this.two = two;
        this.result = result;
    }
    public void setOperator(String operator) {
        this.operator = operator;
    }
    public double getOne() {
        return one;
    }
    public void setOne(double one) {
        this.one = one;
    }
    public double getTwo() {
        return two;
    }
    public void setTwo(double two) {
        this.two = two;
    }
    public double getResult() {
        return result;
    }
    public void setResult(double result) {
        this.result = result;
    }

}

3.控制器(servlet)

获取用户的请求,解析四则运算表达式,并计算结果。然后将请求转发给结果页面。

CalculatorHandler.java

package com.kl.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import com.kl.bean.Calculator;

public class CalculatorHandler extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String expression=request.getParameter("expression");//获取用户请求参数
        double one=0;
        double two=0;
        String operator="";
        System.out.println(expression);
        //解析四则运算表达式
        for(String s:operatorArr()){
            if(expression.contains(s)){
                one=Double.parseDouble(expression.split("\\"+s)[0]);
                two=Double.parseDouble(expression.split("\\"+s)[1]);
                operator=s;
                System.out.println(one+"\t"+two+"\t"+operator);
                break;
            }
        }
        //创建JavaBean存储数据
        Calculator calculator=new Calculator(operator,one,two,
                arithmetic(one, two, operator));
        //将所创建的JavaBean对象存放在request对象中,并制定JavaBean的名字
        request.setAttribute("calculator", calculator);
        //将请求转发到结果页面
        request.getRequestDispatcher("calculationResult.jsp").forward(request, response);
    }
    //四则运算方法
    private double arithmetic(double one,double two,String operator){
        double result = 0;
        if(operator.equals("+")){
            result=one+two;
        }else if(operator.equals("-")){
            result=one-two;
        }else if(operator.equals("*")){
            result=one*two;
        }else if(operator.equals("/")){
            result=one/two;
        }
        return result;
    }
    private String[] operatorArr(){
        String[] arr={"+","-","*","/"};
        return arr;
    }
}
时间: 2024-10-03 23:05:49

servlet清晰理解的相关文章

初识JAVA,对servlet的理解

一.WEB开发的简单理解 Web开发是一个指代网页或网站编写过程的广义术语.网页使用 HTML.CSS 和 JavaScript编写.这些页面可能是类似于文档的简单文本和图形.页面也可以是交互式的,或显示变化的信息.编写交互式服务器页面略微复杂一些,但 却可以实现更丰富的网站.如今的大多数页面都是交互式的,并提供了购物车.动态可视化甚至复杂的社交网络等现代在线服务. 通俗的说,web开发就是我们说的做网站.它分为网页部分,和逻辑部分也就是我们说的前台与后台.前台负责与用户的交互,显示数据.用到H

对于servlet初步理解

Servlet在MVC框架中经常担当控制器(Controller)的角色,其作用类似于调度员,下面我们就根据一个简单JavaEE的示例来理解Servlet的机制和原理. 树结构如上,其中 login.jsp作为测试用户登录页面. welcome.jsp作为登录成功页面 DaDao.java作为数据库操作类 LoginServlet.java就是我们所说的Servlet类 我们来看具体内容: login.jsp <%@ page language="java" contentTyp

Servlet概念理解

这是第一次接触Servlet,将一些资料整理了一下,方便理解与记忆: Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序. servlet的命名可以看出sun命名的特点,如Applet=Application+let,表示小应用程序:Scriptlet=Script+let,表示小脚本程序:同样Servlet=Server+let,表示小服务程序.   主要功能:交互式地浏览和修改数据,生成动态Web内容. Servlet运行于支持Java

Servlet的理解

一.什么是Servlet? Servlet是用Java编写的web组件,实际上可以简单的理解为是用来处理请求的,为什么这么说,看了它的生命周期就知道了. 二.常见的Servlet容器 容器顾名思义是装东西的,Servlet容器里面装的就都是Servlet,容器会根据请求选择不同的Servlet处理. Weblogic,Jboss,Tomcat等这些都是常见常用的Servlet容器. 三.Tomcat容器的层级 知道了容器,那么来看看容器的内部构造,因为我只用过tomcat所以这里已tomcat来

javaWeb基础 之 servlet 过滤器理解

过滤器思维导图理解: 过滤器是属于Servlet 的伴随servlet 启动而启动. 过滤器的工作原理(以下设置了两个过滤器): 用户请求先执行过滤器1 的doFilter 如果通过则执行过滤器2,直到执行对应请求的servlet,执行完成后,返回到过滤器2,再到过滤器1. 原文地址:https://www.cnblogs.com/lanSeGeDiao/p/9348241.html

对Servlet的理解和认识

首先什么是Servlet: Servlet本质就是一个继承了HttpServlet的一个类文件,功能是在容器(服务器)根据客户端不同请求给予相应的响应服务. Servlet提供服务的过程原理(Servlet生命周期): 触发:URL请求,触发 加载:Classloader(类加载器,用来加载java类到java虚拟机Jvm中)加载相关需要用到的类. 实例化:调用构造方法创建Servlet类的对象. (Servlet 对象 :1 request对象,用于封装客户端请求,是HttpServletRe

JSP笔记:JSP与Servlet在理解

1.我们知道Servlet是一个接口,工作在服务端的一个类,有自己生命周期,是由服务器来维护的,主要处理用户的请求的.所有的JAVA WEB 服务器都是支持Servlet. 2.我们做JAVA WEB就是一般处理HTTP请求居多,所以有了专门处理HTTP请求的Servlet,HttpServlet它是Servlet的实现类,会根据用回的请求方式不同调用相应的doXXX方法,去处理HTTP的请求.

个人对servlet的理解、动态网站安装配置以及简单例子解读

Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序,除了Java Servlet API,它还可以用于扩展和添加API的Java类软件包.Java语言能够实现的功能,Servlet基本都能实现(除了图形界面外).Servlet主要处理客户端传来的HTTP请求,并返回一个响应.通常所说的Servlet就是指HttpServlet,能够处理的请求有,doGet().doPost()和service()等方法.在开发Servlet时,可以直接继承java

清晰理解Yii的事件和行为--假如你翻了十多页百度搜索结果还是一无所获的话:)

编程也许真的是个技术活,每次你被概念搞的蒙头转向,无从下手的时候你也许会这么想.但这也就是一会会的事,如果你在晚上喝着茶,咬着牙,僵硬着脖子,一页一页的点百度,然后在笔记上一句话一句话的记下你看到的每一篇文章中看懂了的那一句,我想很快那一句一句的积累会把你带到一个恍然大悟的时刻.这点请你务必相信.但前提是,你翻了十多页的百度看到的相关文章大部分是不重复的....... 总结:上面一段话说了两件事,1柳暗花明是确定是可以常常有的,2百度是确定让人很恼火的. 再总结:上面都是废话,下面开始干货. 让