jsp-servlet

JSP/Servlet

第一:前言

什么是C/S?

Client/Server( 客户端/服务器)

什么是B/S?

Brower/Server( 浏览器/服务器)

什么是Web 应用程序?

 

 

B/S系统相对C/S系统的优势是什么?

B/S是浏览器端/ 服务器端模式,程序完全放在服务器上,不用在浏览器上安装任何文件,它是基于Internet的产物

B/S中浏览器端与服务器端采用请求/ 响应模式进行交互

 

动态和静态页面

  www.hao123.com-----静态网页

  www.google.com-----动态网页

  静态网页:内容不变,不管什么请求都给予相同的结果

什么是动态网页

生活中的动态网页

怎样实现动态网页

网站的访问

  URL Uniform ResourceLocator

–即统一资源定位系统,就是我们通常所说的网址

URL 是惟一能够识别Internet 上具体的计算机、目录或文件位置的命名约定

  URL 的组成:

HTTP协议

 

 

HTTP 协议使用以下方法发送请求信息:

q  GET 方法

q  POST 方法    

GET 方法

q  用于检索信息(如文档、图表或数据库请求结果)

q  请求的页面可以被设置为书签和使用电子邮件发送

q  请求信息作为查询字符串发送(255

POST 方法

q  用于发送敏感信息(如信用卡号)或要保存到数据库中的信息

q  请求的页面不能设置为书签或不能通过电子邮件发送

q  发送的数据没有

Web服务器

Web服务器其实是一个实现HTTP服务端协议的程序

常用的Web服务器

IIS

Apache

Tomcat

tomcat 文件目录介绍

bin目录:存放tomcat 可执行指令的目录

startup  启动服务器

shutdown  停止服务器

conf 目录:存放tomcat 的配置文件

server.xml 服务器的主配置文件

web.xml 定义所有Web应用的配置

tomcat -user.xml 配置tamcat 用户的信息

webApps目录:存放tomcat 服务器发布的所有Web应用

发布一个静态页面到Tomcat

1 、在tomcat/webapps 目录下新建一个文件夹:取名firstWebApp

2 、在firstWebApp 目录下放入一个静态页面文件

3 、在firstWebApp 目录下再新建一个文件夹:取名WEB -INF( 固定名称),往这个文件夹下面放入一个文件为web.xml,内容只写” <web-app></web-app>

4 、启动服务器

Web项目的目录结构

第二:什么是JSP

JSP Java Server Pages )是指:

–在HTML中嵌入Java 脚本语言

–由应用服务器中的JSP 引擎来编译和执行嵌入的Java脚本语言命令

–然后将生成的整个页面信息返回给客户端

JSP 执行过程

Web容器处理JSP 文件请求需要经过3 个阶段:

–翻译阶段:JSP 文件被Web容器中的JSP 引擎转换成Java 源码

–编译阶段:Java 源码会被编译成可执行的字节码

–执行阶段:容器接受了客户端的请求后,执行编译成字节码\JSP 文件;处       

                    理完请求后,容器把生成的页面反馈给客户端进行显示

第一次请求之后,Web容器可以重用已经编译好的字节码文件

注意:如果对JSP 文件进行了修改,Web容器会重新对JSP 文件进行翻译和编译

JSP 页面组成

JSP 页面的元素包括

  <%@ %>定义JSP 页面的指令,一般写在JSP 页面的最上方

page 指令用于定义JSP 文件中的全局属性

  <%!  %>用于定义整个JSP 页面中都能使用到的全局变量或方法,相当于在一个  类中定义其成员

  <% %>用于包括一段JAVA程序,这段程序称为JSP脚本,相当于一个类中的代码块

  <%= %>用于包括一个表达式,表达式一定要有明确的返回值

  注释:

Ø  JSP 表达式的使用:

q   表达式的概念

    表达式是对数据的表示,系统将其作为一个值进行计算和

    显示

q   表达式在JSP页面中的表现形式

    <% = Java表达式 %>

q   示例:

<body>

    <h1>JSP表达式 </h1>

    <b>PI 的值:</b><%=Math.PI%><br />

    <b>100,99中最大的值 :</b><%=Math.max(100,99)%><br/>

    <b>100,99中最小的值 :</b><%=Math.min(100,99)%><br/>

    <b>3+2-5的值 :</b><%=3+2-5%><br/>

    <b>(3+2)==5的值 :</b><%=(3+2)==5%><br/>

    <b>(3+2)!=5的值 :</b><%=(3+2)!=5%><br/>

</body>

Ø  JSP Scriptlet(小脚本)

q   JSP Scriptlet概念

    JSP Scriptlet就是在JSP页面里嵌入一段Java代码

q   JSP ScriptletJSP页面中的表现形式

    <% Java代码 %>

q   示例:

  <body>

  <h1>以直角三角形的形式显示数字</h1>

  <%

     for(inti=1;i<10;i++) {

       for(int j=1;j<=i;j++) {

          out.println(j);

        }

    out.println("<br/>");

    }

 %>

</body>

Ø  JSP 声明

q   JSP 声明的概念

     JSP声明就是在JSP页面中声明Java方法或变量等

q   JSP声明在JSP页面中的表现形式

     < % ! Java 代码 %>

q   示例:

 <%!

 //申明一个常量

 final String SEPARATOR =".";

 //声明一个方法

 public StringcovertAmountWithSeparator(String money){

         nt index = money.indexOf(SEPARATOR);

         tring str =money;

         if(index==-1){

               tr = money+".00";

           }

         return str;

    }

%>

Ø  JSP 指令

q   page 指令用于设置JSP 页面的属性

u  示例:

<%@ page language = "Java"  import  "java.util.*"buffer = "8kb"

errorPage="error.jsp" isErrorPage="false"%>

<html>

    <head>

       <title> 测试page 指令</title>

    </head>

    <body>

        <h1> 这是一个测试页面</h1>

    </body>

</html>

 

q  include 指令:用于在运行时将 HTML文件或 JSP页面嵌入到另一个     

JSP页面

u  include 指令语法

 <%@ include file = ”文件名”%>

u  include 指令用法

示例1

<html>

    <head> include 指令测试页面

    </head>

    <body>

        <%@ include file = "/test.html" %>

    </body>

</html>

 

示例2

<%@page language="java"%>

<%@include file="head.jsp"%>

<html>

<head>

<title></title>

</head>

<body>

<br>

<br>

<h4 align="center">你好,欢迎来到北大青鸟APTECH</h4>

</body>

</html>

Ø  taglib指令

q   taglib指令可以让JSP页面使用标签

    taglib 指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签库表述文件中的标签

q   语法

   <%@ taglib uri = ”标签库表述符文件”prefix = ”前缀名”%>

q   taglib 指令的使用

q JSP 脚本由三个元素组成,即 JSP表达式、JSP Scriptlet JSP 指令

q JSP 表达式包括在 <%=%>内; Scriptlet 包含在<% %>内;声明包含在<%! %>

q JSP 指令共有三种类型,即 pageinclude taglibJSP 指令包括在 <%@  %>

q  page 指令用于设置 JSP 页面的属性;include 指令用于在 JSP 页面嵌入其他文件taglib 指令用于在JSP页面中使用标签

JSP 运行环境

  Web容器(如:Tomcat )提供JSP 引擎,负责JSP 文件的执行,提供JSP 的运行时环境

  MyEclipse 中部署Web应用,等同于在Web容器中部署Web应用

JSP 的内置对象

JSP内置对象说明:

q  JSP 隐式对象是Web 容器加载的一组类

q  它不像一般的Java对象那样用”new”去获取实例,而是可以直接在JSP页面使用的对象

q  隐式对象的名称是JSP 的保留字

q  JSP 使用Java 定义的隐式对象来访问网页的动态内容

输入/输出
JSP 内置对象(输入/输出)request

  request 对象主要用于处理客户端请求

  实现javax.servlet.http.HttpServletRequest接口

  使用HTTP 协议处理客户端的请求

q   使用request对象进行JSP编程

    需求:某网站注册时,需要输入注册信息,请编写JSP页面供用户输入,并获取用户输入的数据。注册信息包括用户名、密码、确认密码、性别、学历和你从哪里知道本网站等主题。

    分析:

    1、编写一个JSP页面,提供用户输入的表单组件。

    2、编写另一个JSP页面,获取用户提交的请求数据,并

          显示出来。

<%!

  public String formatStr(String str){

    return str==null?"":str;

   }

%>

<%

String name = formatStr(request.getParameter("name"));

String pwd = formatStr(request.getParameter("pwd"));

String confirm_pwd

= formatStr(request.getParameter("confirm_pwd"));

String gender =formatStr(request.getParameter("gender"));

String xueli = formatStr(request.getParameter("xueli"));

String[] channels =request.getParameterValues("channel");

%>

JSP 内置对象(输入/输出)response

q  response 对象用于响应客户请求并向客户端输出信息

q  实现javax.servlet.http.HttpServletResponse 接口

q response 对象常用方法

q  void setContentType(String name)

                                          设置作为响应生成的内容的类型和字符编码

q  voidsendRedirect (String name) ---重定向

                                          发送一个响应给浏览器,指示其应请求另一个URL

q 使用response对象进行JSP编程

 

JSP内置对象(输入/输出)out

q 表示输出流

q javax.servlet.jsp.JspWriter 类的实例

q 使用 write()、print() 和 println() 方法

 

q 使用out对象进行JSP编程

q  

 

作用域通信对象

q 隐式对象的作用域包括pagerequestsession   application

q 作用域通信对象包括 sessionapplication  pageContext

 

JSP内置对象(作用域通信对象)session 对象

q  Web 服务器为单个用户发送的多个请求创建会话

q  存储有关用户会话的所有信息

q  javax.servlet.http.HttpSession 接口的实例

q  session 对象最常用的方法有:

q  void setAttribute(String name,Object value)

q    以键/值的方式,将一个对象的值存放到session

q    void getAttribute(Stringname)

q  根据名称去获取session中存放对象的值

JSP内置对象(作用域通信对象)Application 对象

q  表示JSP 页面所属的应用程序

q  应用程序的JSP 页面组合起来形成一个应用程序

q  javax.servlet.ServletContext接口实例

q  application对象最常用的方法有:

q  void setAttribute(String name,Object value)

          以键/值的方式,将一个对象的值存放到application

q  void getAttribute(String name)

           根据名称去获取application中存放对象的值

JSP内置对象(作用域通信对象)pageContext 对象

q  使用户可以访问页面作用域中定义的所有隐式对象

q  它的作用范围是在同一页面

q  javax.servlet.jsp.PageContext 类的实例

q  pageContext对象最常用的方法有:

voidsetAttribute(String name,Object value)

       以键/值的方式,将一个对象的值存放到pageContext

voidgetAttribute(String name)

       根据名称去获取pageContext中存放对象的值

作用域通信对象的使用

Servlet 对象

q  JSP 引擎为每个JSP 生成一个 Servlet

q  Servlet对象提供了访问Servlet 信息的方法和变量

q  Servlet 对象包括

q  page

q  config

JSP内置对象(Servlet对象)page 对象

q  使用page 对象可以访问Servlet 类的所有变量和方法

q  java.lang.Object类的一个实例

JSP内置对象(Servlet对象)config 对象

q  存储在编译JSP 页面的过程中创建的Servlet 的信息

q  javax.servlet.ServletConfig 接口的实例

q  提供了检索Servlet 初始化参数的方法

错误对象
JSP内置对象(错误对象)Exception 对象

q  exception对象用于处理JSP 页面中的错误

q  exception 对象用于访问执行JSP 的过程中引发的异常

q  exception 对象是java.lang.Throwable 类的实例

整理:

q  JSP隐式对象一般分为输入/输出对象、作用域通信对象、Servlet 对象和错误对象四类

q   JSP 中的隐式对象包括pageconfigrequestresponseoutsessionapplicationpageContext exception

q  JSP 定义的作用域包括pagerequestsession application

JavaBeanJSP

q  JavaBean 是可重用组件

JSP页面数据库操作

JSP 使用JavaBean

q  标准动作用于:

q  JavaBean 嵌入JSP 页面  useBean

q  设置和获取JavaBean 的属性  setProperty/getProperty

q  将用户请求转发给其他页面  Forward

q  将其他页面的内容嵌入当前页面 include

q  标准动作可以为空标签及容器标签

q  标准动作中的属性区分大小写

q  JSP 中的标准动作使用<jsp>作为前缀

q  范围指定JavaBean JSP 页面中的可用性。各种范围

    选项如下:

范围

描述

Page

Bean 只能在使用页面时使用。当加载新页面时,就会将其销毁

Request

Bean 在用户对其发出请求时存在

Session

Bean 一直存在于会话中,直至其终止或被删除为止

Application

Bean 在整个应用程序中均可使用

 

JavaBean中的Get()Set()方法

 

JSP 标准动作

useBean动作
创建 JavaBean

JSP中使用JavaBean

setProperty 动作

getProperty 动作

Forward 动作

q  创建一个JSP 页面

q  用户将被转至此页面

Include 动作

includeFileNeedingAParameter.jsp

整理:

q  JavaBean 是可在多个应用程序中重复使用的组件

q  JSP 标准动作用于插入文件、Bean 组件以及将用户转至其他网页

q  forward 动作用于将用户的请求转发给其他页面

q  include 动作用于将一个页面嵌入当前JSP 页面

ServletJSP 的使用

  JSP 代码其实是嵌套在页面中的JAVA代码,如果把所有的业务逻辑全写在JSP 页面上,一旦JSP 页面有几时个甚至上百个,那么对于维护工作来说,是一个相当复杂的工作。所以,一个好的程序设计应该把页面表现层和业务逻辑层分开来,用JSP 控制页面表现,用servlet控制业务逻辑。两者结合起来,达到层次分明的效果。同时,也增加了程序的可扩展性、维护性等。

练习

使用JSP 做一个有登录、注册功能的web应用。要求:

–把所有已注册人员的信息以文件的形式存放在f:/users 目录下

–登录时需判断用户是否存在,如果不存在,则返回登录页面,并提示

–如果用户存在,则判断密码是否匹配,如果不匹配,返回登录页面,并提示

–用户登录成功,从文件中读取用户信息显示在页面上

动态页面的实现原理

什么是servlet

定义:Servlet是一个JAVA程序,是在服务器端运行以处理客户端请求,并做出响应的程序

 

Servlet代码

  实例一

  实例二

servlet 的配置

web.xml 文件中配置Servlet

servlet对客户端请求的处理

练习

提交注册到servlet,提交后返回一个注册成功的信息给客户端

Servlet的生命周期

生命周期的各个阶段

 

Servlet的生命周期由Servlet容器(如:Tomcat) 控制

–容器如何处理请求

  如果给servlet配置了<load-on -startup>1</load -on -startup> 时,servlet从服务器启动就被实例化,并且由服务器自动调用servletinit() 方法。Servlet 实例由服务器自动销毁,在销毁实例前服务器会调用servletdestroy()方法。

  如果没有给servlet配置<load-on -startup> ,那么servlet在第一次被访问的时候才被实例化,并且由服务器自动调用init() 方法。servlet 实例一样由服务器自动销毁,销毁前服务器会调用servletdestroy()方法。

Servlet 下载

利用Servlet 实现文件下载功能

Servlet 上传

利用Servlet 实现文件上传功能

common-fileupload jakarta 项目组开发的一个功能很强大的上传文件组件

Servlet过滤器

什么是过滤器

过滤器的作用

o  在实际开发中,譬如我们可以对客户提交的数据进行重新编码,可以从系统获得配置信息,可以过滤客户提交的某些不合法的词汇,可以验证客户是否已经登录,可以验证客户端浏览器是否支持当前的应用,还可以记录系统的日志文件等等。

 

过滤器的生命周期

o  Servlet一样,过滤器的生命周期分为四个阶段。

n  实例化实现了javax.servlet.Filter接口的子类。

n  读取过滤器的初始化函数,调用init()方法。

n  完成对请求或过滤的响应,调用doFilter()方法。

n  销毁过滤器,调用destroy()方法。

 

过滤器的实例

 

Servlet监听器

监听器概述

用监听器可以监听Web容器中正在执行的程序,根据发生的事件作出特定的响应。如可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,如监听在线用户数量,当增加一个HttpSession时,给在线人数加1

开发与部署监听器

o  编写监听器的实现类

o  部署监听器

      <listener>

            <listener-class>

                 监听器的实现类

            </listener-class>

      </listener>

ServletContext监听器

ServletContextListener示例

ServletContextAttributeListener示例

HttpSession监听器

HttpSessionListener示例

HttpSessionAttributeListener示例

 

HttpSessionBindingListener示例

ServletRequest监听器

ServletRequestListener示例

ServletRequestAttributeListener示例

 

使用Servlet监听实现统计在线人数

实现思路:

      编写一个对Session的监听类,当Session创建时,计数器加一,当Session销毁时,计数顺减一

1、创建Web项目ServletListenerDemo

2、创建一个计数器类:

3、编写监听类:OnlineUserListener,继承自HttpServlet,实现HttpSessionListener

      HttpServlet的方法可以全部删除,只保留实现HttpSessionListener的方法。

      sessionCreated方法中,计数器加一。

      sessionDestroyed方法中,计数顺减一。

4、创建invalidate.jsp,在其中编写jsp,销毁会话,实现退出。

        session.invalidate();

5、在index.jsp中显示当前会话数,即当前在线人数。

   当前在线人数:

    <%=OnlineCounter.getOnline()%>

    <br />

    <a href="invalidate.jsp">退出</a>

6、配置Web.xml

<listener>    

  <listener-class>ory.wyq.listener.OnlineUserListener</listener-class>

</listener>

 

7、启动Tomcat,开启不同会放,可看当前再线人数,点击退出,在线人数减一。

为什么学习JavaEE

1 、使用JSP 技术编写动态网页的时候,遇到了哪些问题?

什么是JavaEE

  解决方法:JavaEE 的使用

  定义:JavaEE(Java Enterprise Edition) 是一个开发分布式企业级应用的规范和标准

JavaEE 扩展框架

StrutsHibernateSpring,它们都是框架

–框架,即F ramework 。其实就是某种应用的半成品,就是一组组件,用来完成自己的系统

–简单说就是使用别人准备好的一切,来实施自己的项目

JavaEE 体系结构

  JavaEE分层结构

–表示层------------- HTML页面

–中间层------------- Servlet 等组件

–数据层------------- DatabaseJDBCJNDI 等)

  JavaEE 体系结构--- 三层体系结构

  表示层技术

  中间层技术

ServletJSP JavaBean

JSP

–显示动态内容的服务器网页

JSTL

–辅助JSP 显示动态内容的标准标签库

Servlet

–接收客户请求,并做出响应的Java程序

Servlet 是中间件技术的重要部分,它控制着其他的组件

JavaBean

JavaEE 的模型组件(DAO/DTO/EJB)

中间层框架技术

Struts框架

Struts框架主要是扩展了Servlet

  数据层技术

JDBC技术

JDBC(JavaData base  Connectivity ):Java  数据库连接

JDBC用来访问数据库和操作数据库表中数据

数据层框架技术

Hibernate

  系统集成技术

JAX -WS技术

JAX -WS (Java API for XML Web Services) JavaEE 平台的重要组成部分

JAX -WS 简化了使用 Java  技术开发Web服务的工作

JNDI 技术

JNDI Java Naming and Directory InterfaceJava 命名和目录接口)是一

组在Java 应用中访问命名和目录服务的API

Spring技术

–系统级框架,各大框架组件的黏合剂!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值