初识JAVA,对servlet的理解
一、WEB开发的简单理解
Web开发是一个指代网页或站点编写过程的广义术语。网页使用 HTML、CSS 和 JavaScript编写。这些页面可能是类似于文档的简单文本和图形。页面也能够是交互式的,或显示变化的信息。编写交互式server页面稍微复杂一些,但 却能够实现更丰富的站点。现在的大多数页面都是交互式的,并提供了购物车、动态可视化甚至复杂的社交网络等现代在线服务。
通俗的说,web开发就是我们说的做站点.它分为网页部分,和逻辑部分也就是我们说的前台与后台.前台负责与用户的交互,显示数据.用到HTML显示数据,CSS控制样式,JS编写复杂交互.后台编写处理这些逻辑的程序.能够用C#,java,vb.php等语言。
那么我们先来看一个WebApplication的简单交互过程:
对web程序的直观印象是强大.一个应用程序,不用安装,仅仅要有个浏览器,你就能干自己的事了.方便,快捷,干净,环保。这就是眼下阶段对它的认识。
上篇文章粗俗的说了一下跟JAVA有关的容器,当中跟JAVA架构有关的容器之中的一个WEB容器就是WEB开发的核心,是servlet,jsp ,bean的容器。其强大的功能,我还说不清,这篇博客主要介绍WEB容器内容之中的一个“servlet”。
二、servlet
1)、Servlet 是提供基于协议的request/response 服务的JAVA类——也就是说Servlet是手工编写的.Class文件。
2)、Servlet必须存放在一个web容器中——这个容器就是一个WEBserver,tomcat,weblogic等都能够。
3)、就是连接Client(浏览器)和DB(数据库)的一个桥梁,一个控制器。
1、生命周期
在真正的应用程序中,每一个WEB 程序每次调用的servlet是一个实例。
我们从client发出一个request (请求),被webserver接收,然后由这个webserver開始“管理”Servlet.
其运行过程例如以下:
首先,实例化Servlet的构造函数
仅仅实例化一次。这点感觉就是一个设计模式:单例。仅仅要WEBserver第一次调用这个Servlet,就实例化,其后在不实例化。java中有好多地方都把设计模式给融合了。向java中的监听器(listener)就有“观察者”的作用。当然这些东西还须要我进一步学习。
其次:运行初始化init方法,这种方法仅仅运行一次。
仅仅要这个servlet类别实例化了,就不会再运行这个INIT函数。
然后:依据传递方式(post,get),由servlet中的service 方法选择运行doGet,or doPost。
servlet是继承自HttpServlet。所以,要依照自己的要求重写doGet,doPost方法。
doGet/doPost:函数定义:doGet(HttpServletRequest request,HttpServletResponse response),都包括两个重要且必须的參数:HttpServletRequest,HttpServletResponse 。一个是用户发来的信息,一个是server用来返回给客户的信息。
最后:当这个WEB程序关系,servlet程序销毁。
生命周期如图:
2、接口
请求:HttpServletRequest
从request 发来的字符串中,解析我们须要的參数信息,在servlet中进行逻辑操作。
响应:HttpServletResponse
依据server的要求,或者servlet逻辑推断的结构,依照一定的HTML格式发送给client。
3、处理数据
处理数据就是生命周期中提到的两种方法:doGet, doPost。
Post ,get的提交这里不再赘述,仅仅要记住,client以什么样的方式发送过来,就会在servlet中寻找相应的方式处理数据。
我们来看看详细的实例。
三、实例解说——这是一个关于用户登陆的样例。
先看一下思路图:
做这个样例前的准备工作:
JAVA环境这个是必须的,然后是安装servlet 的依赖环境/容器-webserver。这里以tomcat为例。
安装tomcat解说:http://jingyan.baidu.com/article/870c6fc33e62bcb03fe4be90.html
安装了tomcat之后,我们曾经从简:都有记事本来完毕我们的工作:
/* 1、HTML */
<html>
<head>
<title>登陆</title>
</head>
<body>
<form action ="loginServlet">
用户名:<input type ="text" name="username"><br>
密码: <input type ="password" name=="password"><br>
<input type ="submit" value="登陆">
</form>
</body>
</html>
/* 2)Servlet */
import java.io.*;
import java.servlet.*;
import javax.servlet.http.*; public class loginServlet extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletResponse,Ioexception { String username=request.getParameter("username");
String password=request.getParameter("password"); System.out.println("username="+username);
System.out.println("password="+password); response.setContentType("text/html;charset=GB18030"); response.getWriter().println("登陆成功!");
}
}
3)XML
<?xml version ="1.0" encoding ="ISO-8859-1"?>
<web-app xmlns="http://java..sun.com/xml/ns/j2ee"
xmlns :xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee"http://java.sun.com./xml/ns/j2ee/web-app_2
version="2.4"> <servlet>
<servlet-name>Myservlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>Myservlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
先编译loginservlet .java,使其变成.class文件。
文件归位: 这些东西写好以后,还须要:归位。一个完整的WEB Application的文件夹:
子目录:WEB-INF
Lib:存放第三方的东西,如Oracle,这里没实用到。
Class:存放一些JAVA的class类。即这里的loginservlet.class类。
XML配置文件——login.xml。
html文件——————与WEB-INF 在同一级文件夹中,这里的login.html
注意:1、用到了外来的东西:数据库驱动,还有数据库helper。这些东西必需要复制到 WEB Application 的lib下。
每次在Tomcat中加入新东西,必须又一次启动,才干被载入。
好了,到这里,归位以后,你就能够执行你的程序了。看看效果怎样。自己动手试一下吧。
初识JAVA,对servlet的理解的更多相关文章
- Java入门——初识Java
Java入门——初识Java 摘要:本文主要对Java这门编程语言进行简单的介绍. Java简介 说明 Java语言历时十多年,已发展成为人类计算机史上影响深远的编程语言,从某种程度上来看,它甚至超出 ...
- Personal Learning Path of Java——初识Java
初识Java 在我个人看来,Java是一门高大上的面向编程语言,这也是Java吸引我的地方.在自学Java之前,我在学校大概学过了一些C语言的知识,在学校学的那点C语言纯属是拿来打基础用的,大概了解了 ...
- 初识Java作业
初识Java作业 一. 填空题 Java技术按照用途不同分为三大版本,分别是JavaSE. javaEE 和JavaMe Java虚拟机就是一个虚拟的用于执行 .class ...
- 初识JAVA语言
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 前言 很多游戏开发者可能会有疑问,你会C#,JS,TS,为什么还要初识JAVA呢?有人可能会说,多学点对自己有好处 ...
- JAVA:初识Java · Xer97
1. 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静 ...
- 初识Java
Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以极强的安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势 ...
- Java语言的个人理解
Java语言的个人理解(比价深层次吧) 大四的生活确实十分的奢靡,不锻炼,不读书,几乎就是当一天和尚撞一天钟的生活,太颓废了,还好自己不是这个样子,不过身体确实差了很多,昨天跑了一圈内环(4KM),今 ...
- Java常量字符串String理解
Java常量字符串String理解 以前关于String的理解仅限于三点:1.String 是final类,不可继承2.String 类比较字符串相等时时不能用“ == ”,只能用 "eq ...
- SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏
SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!! 基础知识目前不够,有感性 ...
- Java 面向对象编程——第一章 初识Java
第一章 初识Java 1. 什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...
随机推荐
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...
- Android:Notification的生成与取消
MainActivity.java: package com.example.notificationdemo; import android.app.Activity; import android ...
- nm命令
它用来列出一个目标文件中的各种符号. nm命令还是比较简单而且强大的.它用来列出一个目标文件中的各种符号.符号的种类很多,以下是一些常见的符号类型 nm输出字符 含义 R Read only symb ...
- splinter python浏览器自动化操作,模拟浏览器的行为
Splinter可以非常棒的模拟浏览器的行为,Splinter提供了丰富的API,可以获取页面的信息判断当前的行为所产生的结果 最近在研究网站自动登录的问题,涉及到需要实现浏览器自动化操作,网上有 ...
- [poj 1265]Area[Pick定理][三角剖分]
题意: 给出机器人移动的向量, 计算包围区域的内部整点, 边上整点, 面积. 思路: 面积是用三角剖分, 边上整点与GCD有关, 内部整点套用Pick定理. S = I + E / 2 - 1 I 为 ...
- Codeforces Beta Round #10 B. Cinema Cashier (树状数组)
题目大意: n波人去k*k的电影院看电影. 要尽量往中间坐,往前坐. 直接枚举,贪心,能坐就坐,坐在离中心近期的地方. #include <cstdio> #include <ios ...
- Swift - 使用UI Dynamics给UIKit组件添加重力和碰撞行为
UI Dynamics是UIKit的一个新组成部分,它向iOS中的视图提供了与物理学有关的功能和动画.可以让你向视图中引入力和物理属性,可以让你的视图弹跳,舞动,受重力影响等等. 下面通过样例,演示使 ...
- 关于caffe-windows中 compute_image_mean.exe出现的问题
这两天有兴致装了下caffe.感受下这个框架. 可是在这个过程中遇到非常多问题.我把碰到的问题和解决方式写下,便于后人高速上手. compute_image_mean.exe 编译出来后.运行数据变换 ...
- c#实现Javascript的encodeURIComponent()函数
原文 c#实现Javascript的encodeURIComponent()函数 国内外各搜索引擎,均用JavaScript的encodeURIComponent()函数对搜索关键字进行编码,终于找 ...
- Pro Android 4 第五章 理解Intent
Android引入了一个名为Intent的概念用来唤醒各种组件.Android中的组件包括:activities(UI 组件),services(后台代码),broadcast receiv ...