servlet & javabean

时间:2021-05-15 23:09:56

1.servelet

    1. 什么是Servlet?
      ① Servlet就是JAVA 类
      ② Servlet是一个继承HttpServlet类的类
      ③这个在服务器端运行,用以处理客户端的请求
    2. Servlet相关包的介绍
      --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请求
        还有几个方法大家自己去查阅API帮助文件
      --javax.servlet包的接口:
        ServletConfig接口:
      在初始化的过程中由Servlet容器使用
        ServletContext接口:定义Servlet用于获取来自其容器的信息的方法
        ServletRequest接口:向服务器请求信息
        ServletResponse接口:响应客户端请求
        Filter接口:
      --javax.servlet包的类:
        ServletInputStream类
      :用于从客户端读取二进制数据
        ServletOutputStream类:用于将二进制数据发送到客户端
      --javax.servlet.http包的接口:
        HttpServletRequest接口:
      提供Http请求信息
        HttpServletResponse接口:提供Http响应
    3. Servlet生命周期
      --Servlet生命周期就是指创建Servlet实例后,存在的时间以及何时销毁的整个过程.
      --Servlet生命周期有三个方法
        init()方法
        service()方法:Dispatches client requests to the protected service method 
        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()方法
        ----垃圾收集:销毁实例
    4. Servlet的基本结构
      package cn.dragon.servlet;
      //下面是导入相应的包
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      /**
      * 这是第一个Servlet的例子
      * @author cn.dragon
      */ public class ServletDemoFirst extends HttpServlet {   
        //用于处理客户端发送的GET请求   
        public void doGet(HttpServletRequest request, HttpServletResponse response)   
          throws ServletException, IOException {   
           response.setContentType("text/html;charset=GB2312"); //这条语句指明了向客户端发送的内容格式和采用的字符编码.   
           PrintWriter out = response.getWriter();    
           out.println(" 您好!"); //利用PrintWriter对象的方法将数据发送给客户端   
           out.close();   
        }   
        //用于处理客户端发送的POST请求   
        public void doPost(HttpServletRequest request, HttpServletResponse response)   
          throws ServletException, IOException {   
          doGet(request, response); //这条语句的作用是,当客户端发送POST请求时,调用doGet()方法进行处理   
        }
      }
    5. Servlet的部署
      以下截取部分
      
      <servlet>
      <description>任意</description>
      <display-name>任意</display-name>
      <servlet-name>ServletDemoFirst</servlet-name>
      <servlet-class>cn.dragon.servlet.ServletDemoFirst</servlet-class>
      </servlet>  <servlet-mapping>
      <servlet-name>ServletDemoFirst</servlet-name>
      <url-pattern>/servlet/ServletDemoFirst</url-pattern>
      </servlet-mapping> 【注意】   ① 上面的两个<servlet-name>必须相同
        ② <servlet-class>后面指在对应的类上面.  技巧:你可以直接在你的servlet类中复制过来,这样可以避免出错!
        ③ <url-pattern> 必须是/servlet 再加servlet名字.大家现在就这么记.
    6. Servlet实例演示
      package cn.dragon.servlet;
      
      import java.io.IOException;
      import java.io.PrintWriter;
      import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      public class ServletDemoSecond extends HttpServlet {
        //初始化
        public void init() throws ServletException {
          System.out.println("我是init()方法!用来进行初始化工作");
        }
        //处理GET请求
        public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
          System.out.println("我是doGet()方法!用来处理GET请求");
          response.setContentType("text/html;charset=GB2312");
          PrintWriter out = response.getWriter();
          out.println("<HTML>");
          out.println("<BODY>");
          out.println("这是Servlet的例子");
          out.println("</BODY>");
          out.println("</HTML>");
        }
        //处理POST请求
        public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
          doGet(request, response);
        }
        //销毁实例
        public void destroy() {
          super.destroy();
          System.out.println("我是destroy()方法!用来进行销毁实例的工作");
        }
      } web.xml文件 <?xml version="1.0" encoding="UTF-8"?>
      <web-app version="2.4"
        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_4.xsd"> <servlet>
      <servlet-name>ServletDemoSecond</servlet-name>
      <servlet-class>cn.dragon.servlet.ServletDemoSecond</servlet-class>
      </servlet> <servlet-mapping>
      <servlet-name>ServletDemoSecond</servlet-name>
      <url-pattern>/servlet/ServletDemoSecond</url-pattern>
      </servlet-mapping> </web-app>

2.javabean

JavaBean是符合某种规范的Java组件,也就是Java类。

它必须满足如下规范:

1)必须有一个零参数的默认构造函数

2)必须有get和set方法,类的字段必须通过get和set
方法来访问。
(get方法无参,set方法有参)

我们下面就来看一个JavaBean的例子。

一般网页登陆都需要用户名和密码,我们可以把用户名和密码存放在JavaBean中。

代码如下:

package mytrain.formbean;

public class userBean {    

    private String name;
private String password; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

访问方法有2种: 直接访问JSP标签访问        
(不过我们推荐通过标签来访问) 
1)直接访问 
a) 声明bean 
  在页面顶部导入JavaBean类: <%@ page import="mytrain.formbean.userBean" %> 
  在JSP段实例化类: <% userBean user = new userBean(); %> 
b) 访问bean 
  <% user.setXXX(aa); %> 
  <%=user.getXXX();%> 
2)标签访问 (推荐)
 a) 声明bean 
  使用userBean标签: 
  <jsp:useBean id="user" class="mytrain.formbean.userBean"/> 
b) 访问bean 
  通过setProperty标签来设置: 
  <jsp:setProperty name="user"  property="name" param="mUserName"/> 
  通过getProperty标签来取得: 
  <jsp:getProperty name="user" property="name"/> 
下面我们来看一下完整的代码。

标签访问法:
<%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>表单Bean例子2</title>
<link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />
</head> <body> <form action="" method="post">
<table>
<tr>
<td>
<span class="blue10">用户名:</span>
</td>
<td>
<input type="text" name="mUserName" size="20"><br>
</td>
</tr>
<tr>
<td>
<span class="blue10">密 码:</span>
</td>
<td>
<input type="password" name="mPassword" size="20"><br>
</td>
</tr>
<tr>
<td>
</td>
<td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type=submit value="submit"/>
</td>
</tr>
</table>
</form> <jsp:useBean id="user" class="mytrain.formbean.userBean"/>
<jsp:setProperty name="user" property="name" param="mUserName"/>
<jsp:setProperty name="user" property="password" param="mPassword"/> <hr/> 用户名:<jsp:getProperty name="user" property="name"/>
<br>
密 码:<jsp:getProperty name="user" property="password"/> </body>
</html>
直接访问法:
<%@ page language="java" pageEncoding="GBK"%>
<%@ page import="mytrain.formbean.userBean" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>表单Bean例子3</title>
<link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />
</head> <body> <form action="" method="post"> <table>
<tr>
<td>
<span class="blue10">用户名:</span>
</td>
<td>
<input type="text" name="mUserName" size="20"><br>
</td>
</tr>
<tr>
<td>
<span class="blue10">密 码:</span>
</td>
<td>
<input type="password" name="mPassword" size="20"><br>
</td>
</tr>
<tr>
<td>
</td>
<td>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type=submit value="submit"/>
</td>
</tr>
</table>
</form> <%
userBean user = new userBean();
user.setName(request.getParameter("mUserName"));
user.setPassword(request.getParameter("mPassword"));
%> <hr/> 用户名:<%=user.getName()%>
<br>
密 码:<%=user.getPassword()%> </body>
</html>

servlet & javabean的更多相关文章

  1. JSP&plus;Servlet&plus;javabean&plus;oracle实现页面多条件模糊查询

    之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...

  2. myEclipse6&period;5与数据库(SQL Server2008)连接遇到的问题(自己总结的干货)&lt&semi;用SSH框架的时候,用servlet&plus;javabean&plus;jsp的时候&gt&semi;

    昨天因为学习SSH框架的搭建,时隔一年又重新遇到了myEclipse连接数据库的问题.废话不多说,上干货 (以下全部按照我遇到的问题的顺序,也就是没有顺序,就是任性) 请注意:这是在myEclipse ...

  3. JSP中使用的模式——JSP&plus;Servlet&plus;JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  4. MVC jsp&plus;servlet&plus;javabean 连接Mysql数据库測试demo

    本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...

  5. 搞不懂SSH与JAVA&plus;Servlet&plus;javabean有什么关系

    在SSH中:struts 是控制层,同时与Jsp结合代表表现层,同时负责客户端请求的处理,Spring主要处理逻辑事物处理,Hibernate主要对数据库的持久化操作. Jsp+Servlet+Jav ...

  6. 深入浅出Java MVC&lpar;Model View Controller&rpar; ---- (JSP &plus; servlet &plus; javabean实例)

    在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...

  7. jsp&plus;servlet&plus;javabean开发web项目

    一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...

  8. Jsp&plus;Servlet&plus;JavaBean经典MVC模式理解

    MVC模式目的(实现Web系统的职能分工). 在Java EE中,Jsp+Servlet+JavaBean算是里面经典的模式,是初学者必备的知识技能.M, Model(模型)实现系统的业务逻辑 1.通 ...

  9. (jsp&plus;servlet&plus;javabean )MVC架构

    MVC是三个单词的缩写,这三个单词分别为:模型.视图和控制. 使用的MVC的目的:在于将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如Windows系统资源管理器文件夹内容的显示方 ...

  10. JSP开发模式2&lowbar;JSP&sol;Servlet&sol;JavaBean(简单注册功能)

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class RegisterBean {    privat ...

随机推荐

  1. SQL基础--索引

    索引的概念: 在数据库中索引是用于提升数据库查询操作性能的一种手段,但在频繁更新的表上,索引反而会降低性能. 常用的索引结构: B*树索引 位图索引 B树索引: B书索引是最基本的索引结构,Oracl ...

  2. MyBatis知多少(25)动态SQL

    使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的 ...

  3. hdu 1515 dfs

    一道不错的搜索题 题意:告诉你两个字符串a和b,要求对a进行栈的操作而产生b串,输出操作的顺序,如果有多组输出就按字典序输出. Sample Input madam adamm bahama baha ...

  4. ORA-16179&colon; incremental changes to &quot&semi;log&lowbar;archive&lowbar;dest&lowbar;1&quot&semi; not allowed with SPFILE

    SQL> alter system set log_archive_dest_1='E:\arch ' scope=both; alter system set log_archive_dest ...

  5. Android项目实战--手机卫士24--程序锁的实现以及逻辑

    昨天我们已经把程序全部读取出来,显示到界面上了,那今天,我们就来讲一下那个程序锁的实现啦.其实也很简单啦,我们主要就是把用户要锁定的程序放到一个表里面,然后就监听手机里面的任务栈,如果发现任务栈里面出 ...

  6. C&num; 编码约定

    参考自 MSDN     https://msdn.microsoft.com/zh-cn/library/ff926074.aspx , 只摘要个人觉得有用部分 命名约定 在不包括 using 指令 ...

  7. 【Java】Java网络编程菜鸟进阶:TCP和套接字入门

    Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...

  8. 写给Java开发者的Node&period;JS简介

    前言 今天上推特看见这篇文章,点进去发现是新货. 正好最近想入Node的坑,又有一些Java基础,所以希望翻译出来给大家,同时也让自己加深理解. 才疏学浅,如有不妥之处请指正. 原文链接:Node f ...

  9. python3&period;5新增函数isclose的使用

    前言:python3.5的math模块新增一个isclose函数用来判断两个浮点数的值是否接近或相等,这是由于浮点数的计算总是存在一定的误差.下面谈一下用法: import math print(ma ...

  10. Kafka元数据缓存&lpar;metadata cache&rpar;

    经常有人问的一个问题就是:Kafka broker到底是不是无状态的?网上有这样的说法: 正常情况下consumer会在消费完一条消息后线性增加这个offset.当然,consumer也可将offse ...