热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javaweb之jsp初学习

JavaWeb介绍概念JavaWeb,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有javaapplet,不过使

Java Web 介绍

  • 概念

Java Web,是用Java技术来解决相关web互联网领域的技术总和。

web包括:web服务器和web客户端两部分。 
Java在客户端的应用有java applet,不过使用得很少。 
Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

  • web服务器

WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。

Internet上供外界访问的Web资源分为:

静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。 
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

静态web资源开发技术:Html 常用动态web资源开发技术:JSP/Servlet、ASP、PHP等。

  • web应用程序

WEB应用程序指供浏览器访问的程序,通常也简称为web应用。例如有a.html 、b.html…..多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)

一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。

  • 静态Web 
    htm、html,这些是网页的后缀,如果现在在一个服务器上直接读取这些内容,那么意味着是把这些网页的内容通过网络服务器展现给用户。整个静态WEB操作的过程图如下:

  • 静态WEB中存在以下几个缺点:

    Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。

    为了可以让静态的WEB的显示更加好看,可以加入了Javascript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。

    静态WEB无法连接数据库,无法实现和用户的交互。

    • 所谓的动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。整个动态WEB操作的过程图如下:
  • 在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给WEB服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过WEB服务器返回给(Response)客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。

    静态WEB中存在以下几个缺点:

    Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。

    为了可以让静态的WEB的显示更加好看,可以加入了Javascript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。

    静态WEB无法连接数据库,无法实现和用户的交互。


  • 动态web 

  • 动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(.htm或者是.htm)还是动态资源。

    如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

    如果WEB Server Plugin发现客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。



    • Java Servlet
    • Java用于动态网页的一种技术。 
      Servlet网页内容会以实例方式加载到内存中,而且通常只会加载一次。如果同时有多个游览器请求此网页来处理,Web容器会分别替各个请求建立一条线程,以存储相同的Servlet实例。这样一来不仅降低了服务器的负担,也提升了执行效能。但若Servlet实例一直都没被存取的话,占着内存空间也是一种资源浪费,所以有些服务器会自动将这种Servlet实例从内存中移除。

      • Web Container(Web容器)

      Web容器用来执行Servlet网页,所以又称Servlet容器。 
      Web容器就是专门设定与管理Servlet网页的运行环境,包括Web部署文件加载,多线程管理,内存管理,安全性管理,JSP标签解析等。 
      当Web容器执行环境设定好之后,就会加载相应的Servlet网页内容并执行。 
      Web容器功能独立出来的好处之一就是编写Servlet网页的程序设计师不需要烦恼如何设定环境,而只要专心处理网页的程序逻辑即可。

      搭建JavaWeb开发环境

      • 工具介绍

      Tomacat是一个简易但功能齐全的Web服务器,而且是一个Open Source软件。 
      Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范,启动界面如图:

    • 环境搭建步骤
    • 1.安装JDK(jdk-7u15-windows-i586.ext)

      2.解压eclipse-jee-helios-win32软件

      3.搭建tomcat

      解压tomcat 服务器到d:某个文件夹中D:\Tomcat_relation\apache-tomcat-7.0.22-windows-x86\apache-tomcat-7.0.22

      配置环境变量
      JAVA_HOME (C:\Program Files\Java\jdk1.7.0_15) 
      CATALINA_HOME(E:\webserver\apache-tomcat-7.0.22)

      双击bin目录下的startup.bat文件

      浏览器输入:http://localhost:8080 可以看到Tomcat的欢迎页面就说明配置成功了。

      使用eclipse编写第一个JavaWeb程序

      步骤

      • 新建工程,选择“Dynamic Web Project”创建动态网站
    • 点击“New Runtime”,选择项目的运行环境
    • 选择“Apache Tomcat v7.0”

    • 选择tomcat安装路径。选择jre7。

    创建默认首页“JSP File” 


    填写主页名字index.jsp



    填写jsp文件,添加title标签和h1标签 

    选中工程,Run As --> Run on Server 




    Jsp简介

    • 概念

    JSP全名为Java Server Pages,其根本是一个简化的Servlet设计,他实现了在Java当中使用HTML标签。Jsp是一种动态网页技术,标准也是JAVAEE的标准。Jsp与Servlet一样,是在服务器端执行的。

    • 常见动态网站开发技术对比

    Jsp:Java平台,安全性高,适合开发大型的,企业级的Web应用程序 
    Asp.net:.Net平台,简单易学。但是安全性以及跨平台性差 
    Php:简单,高效,成本低开发周期短,特别适合中小型企业的Web应用开发。(LAMP:Linux+Apache+MySQL+PHP)

    • Jsp页面元素构成




    • Jsp指令

    Page指令:

    通常位于jsp页面顶端,同一个页面可以有多个Page指令 page指令语法格式

    <%@ page 属性1=“属性值” 属性2=“属性值1,属性值2”... 属性n="属性值n"%>

    language

    指定jsp页面使用的脚本语言,默认值为java

    import

    通过该属性来引用脚本语言中使用到的类文件,默认值无

    contentType

    用来指定jsp页面所采用的编码方式,默认值text/html;ISO-8859-1

    --

    include指令

    将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的jsp语句

    --

    taglib指令

    使用标签库定义新的自定义标签,在JSP页面中启动定制行为。

    • 注释

    HTML的注释:

     //客户端可见

    Jsp的注释:

    <%-- JSP注释 --%> //客户端不可见

    Jsp脚本注释:

    <%
    //单行注释
    /**/多行注释
    %>
    • Jsp脚本

    在jsp页面中执行java代码

    语法:

    <% Java代码 %>

    例如:

    <% out.println("Hello World") %> 
    • Jsp声明

    在JSP页面中定义变量或者方法

    语法:

    <%! Java代码 %>

    例如:

    <%!
    //变量
    String name = "Jack";

    //方法
    int add(int x, int y){
    return x+y;
    }

    %>
    • Jsp表达式

    在JSP页面中执行的表达式

    语法:

    <% = 表达式 %>  //注意:表达式不以分号结束

    例如:



    你好<%=name %>


    x+y=<%= add(10, 5) %>

    • Jsp页面生命周期


    jspServer()方法被调用来处理客户端的请求。对每一个请求,jsp引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该jsp文件,则jsp引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以响应是非常快的。

    Jsp内置对象

    • 内置对象简介

    Jsp内置对象是Web容器创建的一组对象,不使用new关键字就可以使用的内置对象。

    例如:

    <% 
    int value[] = {60, 70, 80};
    for(int i: value){
    out.println(i);
    }
    %>

    代码中的out对象就属于内置对象

    • Web程序的请求响应模式

    用户发送请求(request) 服务器给用户响应(response)

    • 缓冲区

    Buffer,所谓缓冲区就是内存的一块区域用来保存临时数据

    • out

    out对象是JspWriter类的实例,是向客户端输出内容常用对象 
    常用方法如下:

    1. void println() 向客户端打印字符串
    2. void clear() 清除缓冲区的内容,如果在flush()之后调用会抛出异常
    3. void flush() 将缓冲区内容输出到客户端
    4. int getBufferSize() 返回缓冲区以字节数的大小
    5. int getRemaining() 返回缓冲区还剩余多少可用
    6. boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
    7. void close 关闭缓冲流
    • get与post区别

    表单有两种提交方式:get与post


    1. get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2kb。安全性能较低但效率比post方式高。适合提交数据量不大,安全性不高的数据。比如:搜索,查询等功能。
    2. post:将用户提交的信息封装在HTML HEADER 内。适合提交数据量大,安全性能高的用户信息。比如:注册,修改,上传等功能。

    例如:



    用户登录






















    用户名:
    密码:










    推荐阅读
    • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
    • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
    • 如何在服务器主机上实现文件共享的方法和工具
      本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
    • 基于Socket的多个客户端之间的聊天功能实现方法
      本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
    • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
    • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
    • JavaScript简介及语言特点
      本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
    • 深入解析Linux下的I/O多路转接epoll技术
      本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
    • Linux下安装免费杀毒软件ClamAV及使用方法
      本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
    • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
    • Spring框架《一》简介
      Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
    • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
    • 如何使用Java获取服务器硬件信息和磁盘负载率
      本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
    • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
    • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
    author-avatar
    zwjy2018
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有