首页 > 技术文章 > java web

jmqm 2017-05-20 15:12 原文

1、java web

  • 基于javaEE,需要在该框架的容器和组件支持下完成。
  • 以分布式组件集合的形式存在(即由软件组件构成),而分布式软件组件在其各自的容器中运行。
  1.1、容器
  • 指的是提供特定程序组件服务的标准化运行环境,客户通过这些组件可以在javaEE平台上得到所期望的服务。
  • 作用:为组件提供标准化服务(部署、执行、生命周期管理、安全等)和API接口

 

包括:

  (1)、Applet容器。负责在web浏览器和java插件上运行java applet程序,对应于用户界面层。现在少用了。

  (2)、应用客户端容器。负责web应用在客户端组件的运行,对应于用户界面层。

  (3)、web容器。管理jsp和servlet等组件的运行,主要负责web应用与浏览器的通信。对应于表示层。

  (4)、EJB容器。为Enterprise JavaBean组件提供运行环境。主要负责数据处理以及和数据库或其他java程序的通信。对应于业务层和数据访问层。

  1.2、组件
  • 指在应用程序中发挥特定功能的软件单位。实质就是在功能和使用上被标准化的几种特定java程序。 

 

分类:

  (1)、客服端组件。Applet和客户端应用程序。

  (2)、web组件。web容器中的jsp、servlet、过滤器和监听器。

  (3)、EJB组件。EJB容器中的EJB组件


 

2、java web开发技术

一个完整的web应用程序通常由如下组件构成:

  (1)、表示层(视图)。一般由html和jsp页面。

  (2)、控制层。servlet。

  (3)、业务逻辑层。JavaBeab或EJB。

  (4)、数据访问层(持久层)。jdbc、hibernate。


  

  【1】、html


  

  【2】、css


  

  【3】、javascript


  

  【4】、jsp

  • Java Server Page, Java EE 组件,本质上是 Servlet。
  • 运行在 Web Container.接收 Http Request,生成 Http Response(默认协议是 Http 请求和响应)
  • JSP 使得我们能够分离页面的静态 HTML 和动态部分——我们需要的技术。
  • 使页面可以混和html代码、Java代码以及JSP标签;允许访问组件

标记:

  (1)、jsp指令标记。page、include、taglib。

  (2)、jsp动作标记。include、forward、param、useBean、setProperty、getProperty。

  (3)、jsp成员声明标记。声明全局变量。

  (4)、jsp程序片。

  (5)、jsp表达式。

重要内置对象:

  (1)、request

    重要方法:set/getAttribute()、set/getParameter()、getCookie()、set/getCharacterEncoding()

  (2)、response

    重要方法:setCharacterEncoding()、setContentType()、sendRedirect()可以跳转到任意页面且不带request信息。setHeader()可以定时刷新或定时重定向网页等操作。

  (3)、out

  (4)、session

    重要方法:getId()、set/getAttribute()、idNew()、getCreationTime()、getLastAccessedTime()

  (5)、application

    只要不关闭服务器将一直存在。所有用户共享。


  

  【5】JDBC

Dao设计模式:实现了业务数据的对象化封装,数据访问和业务逻辑的分离。

  四个组件:

    DBUtils工具类---负责数据库的连接与关闭

    Dao接口---定义增删该查的抽象方法,一个领域模型对应一个Dao接口。

    Dao接口的实现类

    VO值对象---一个VO对应一个数据表,便于把对数据表的操作转化成对java类的操作。

  


 

数据源与连接池技术


  

  【6】JavaBean

  • 遵循一定规范的java类;
  • 封装了数据和业务逻辑;
  • 供jsp和servlet调用。

  

  【7】servlet

按照servlet规范编写、由服务器调用和执行的服务器端程序。

继承自父类HttpServlet的重要方法:

  init():全局执行一次。

  service():根据请求类型会调用doGet()和doPost()方法。

  doGet()。

  doPost()。

  destroy():servlet对象注销时自动调用。

这些方法构成了servlet的生命周期,即创建、服务、消亡。

内置对象:

  request、respose、session(request.getSession()获取)、out(request.getWriter())


 

servlet组件和jsp组件可以通过request、session、application、cookie和javaBean实现数据共享。


  

  【8】基本编程模式

(1)、jsp

(2)、jsp+javaBean

(3)、jsp+servlet

(4)、jsp+servlet+javaBean

(5)、jsp+servlet+javaBean+Dao模式


  

  【9】EL和JSTL

EL与JSTL目的都是为了:提高开发效率,减少页面中jsp代码的数量、保持页面的简洁和可读性、可维护性。都作用在jsp页面表示层。


EL(Expression Language):表达式语句。

作用:获取范围变量的值,并在页面上显示出来。


 

这里的“范围变量”包括:

  1、内部对象:jsp(pageContext)、作用域(pageScope、requestScope、sessionScope、applicationScope)、请求参数(param、paramValues)、cookie(cookie)、请求头(header、headerValues)

  2、集合、数组

  3、javaBean

  4、其他对象或数据结构

JSTL(JSP Standard Tag Library):jsp标准标签库。


 

分类:

  1、核心库:c,操作变量、流程控制、url生成和操作

  2、函数:fn,字符串处理函数

  3、数据库操作:sql,操作关系数据库

  4、格式化:fmt,数字机日期的格式化、页面国际化

  5、XML处理:x,操作Xml数据


  

  【10】Ajax

  运用js和xml实现浏览器和服务器异步通信的一种技术。实现页面的局部刷新和显示。

  js原生Ajax:使用浏览器内置的ajax引擎完成异步通信

    (1)创建Ajax引擎对象

    (2)绑定监听、接受响应数据的处理

    (3)提交地址

    (4)发送请求

 1 <html>
 2 
 3   <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 5     <title>AJAX实例</title>
 6     <script language="javascript" type="text/javascript">    
 7 
 8      var xmlHttpRequest;  //定义一个变量用于存放XMLHttpRequest对象
 9       
10       function createXMLHttpRequest(){
11         if(window.ActiveXObject){//IE浏览器的创建方式
12           xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
13         }else if(window.XMLHttpRequest){ //Netscape浏览器中的创建方式
14           xmlHttpRequest = new XMLHttpRequest();
15         }
16       }
17 
18       
19       function httpStateChange(){//判断异步调用是否完成
20         if(xmlHttpRequest.readyState == 4){
21           //判断异步调用是否成功,如果成功开始局部更新数据
22           if(xmlHttpRequest.status == 200||xmlHttpRequest.status == 0){//查找节点
23             var node = document.getElementById("myDIv");//更新数据
24             node.firstChild.nodeValue = xmlHttpRequest .responseText;
25           } else{
26             alert("异步调用出错/n返回的HTTP状态码为:"+xmlHttpRequest.status + "/n返回的HTTP状态信息为:" + xmlHttpRequest.statusText);
27           }
28         }
29       }
30 
31       //ajax异步操作
32       function getData(name,value){
33         createXMLHttpRequest();//创建XMLHttpRequest对象
34         if(xmlHttpRequest!=null){
35           xmlHttpRequest.open("get","ajax.text",true)//创建HTTP请求
36           xmlHttpRequest.onreadystatechange = httpStateChange;//监听,接受数据并处理
37           xmlHttpRequest.send(null);//发送请求
38         }
39       }
40 
41     </script>
42 
43   </head>
44 
45 
46   <body>
47       <div id="myDiv">原数据</div>
48 
49       <input type = "button" value = "更新数据" onclick = "getData()">
50 
51      </body>
52 </html>
ajax实例

  Jquery中的Ajax:对js原生的ajax进行了封装,封装后的ajax的操作方法更简洁,功能更强大

 

    重要方法:

      jQuery.ajaxSetup()---设置将来的 Ajax 请求的默认值。

      jQuery.ajax()---执行异步 HTTP (Ajax) 请求。

      jQuery.get()---使用 HTTP GET 请求从服务器加载数据。

      jQuery.getJSON()---使用 HTTP GET 请求从服务器加载 JSON 编码数据。

      jQuery.post()---使用 HTTP POST 请求从服务器加载数据。

 

      序列化方法:

        jQuery.param()---创建数组或对象的字符串序列化表示,适合在 URL 查询字符串或 Ajax 请求中使用。

        serialize()---将表单内容序列化为字符串。

        serializeArray()---将表单内容序列化为JSON数组。

 1 $.ajax({
 2     url:'/comm/test1.php',
 3     type:'POST', //GET
 4     async:true,    //或false,是否异步
 5     data:{
 6         name:'yang',age:25
 7     },
 8     timeout:5000,    //超时时间
 9     dataType:'json',    //返回的数据格式:json/xml/html/script/jsonp/text
10     beforeSend:function(xhr){
11         console.log(xhr)
12         console.log('发送前')
13     },
14     success:function(data,textStatus,jqXHR){
15         console.log(data)
16         console.log(textStatus)
17         console.log(jqXHR)
18     },
19     error:function(xhr,textStatus){
20         console.log('错误')
21         console.log(xhr)
22         console.log(textStatus)
23     },
24     complete:function(){
25         console.log('结束')
26     }
27 })
View Code

 

  【11】过滤器

  主要用来来接用户请求,实现如权限检查、编码转换、加密、站点访问权限控制等通用的“横向”模块。


  

  【12】监听器

主要用来监听web应用的上下文信息、servlet请求、session会话等信息,并自动根据不同情况,在后台调用相应的处理程序。

除了监听ServletContext、HttpSession、ServletRequest等对象本身的变化(创建、销毁),还可以监听对象中属性的变化(增、删、改)

推荐阅读