【WEB程序设计】web程序设计的一些基本知识

动态网页与静态网页的区别:

     动态网页呈现的用户数据随着用户、时间、运行环境改变而改变。客户看到的网页内容是动态变化的。

•javaScript程序(用于提高页面与用户的交互能力,其最大的特点就是可以读/写浏览器建立的DOM树,可以对浏览器端的鼠标键盘事件作响应,可以对采集的数据作验证,可以检测浏览器的类型等。浏览器内嵌有JavaScript引擎,专门执行JavaScript代码。)
• AJAX:一种实现动态网页的技术,使用JavaScript的XMLHttpRequest 对象向服务器发出HTTP请求,并提交数据(JSON格式);服务器处理请求并返回响应数据(XML格式或txt格式或JSON格式);浏览器不必等待服务器的响应,异步接收响应数据,并局部更新页面的DOM树,从而实现页面的局部更新。
• JQuery:一个功能丰富的小型JavaScript程序库,可快速实现DOM操纵、事件处理、动画、AJAX调用等功能。

1.表示层的设计

1.1表示层设计

整体风格设计
    版面布局:上-中-下;左-中-右
    色彩、字体字型
    控件大小及外观样式、控件命名风格
    超链接样式
    局部页面设计:
    页面功能目标
    页面控件布局
数据提交方案:
    提交方式:超链接|表单;
    提交方法:GET|POST;
    参数名称、长度、类型;
    接受数据的Servlet URL;
    模型类或领域对象或值对象;
页面类型:
    静态   html
    动态   jsp

1.2表示层缓存控制与字符编码

1.2.1如何禁止浏览器对页面的缓冲
 对纯html文件,在<head>标签内加如下
    <meta http-equiv=“Pragma”  content=“no-cache” /> 
    <meta http-equiv=“Cache-Control”  content=“no-cache/> 
    <meta http-equiv=“Expires”  content=“0” /> 
对JSP代码,在 <head>加:
    <%    
    response.setHeader("Cache-Control","no-cache");    
    response.setHeader("Pragma","no-cache");    
    response.setDateHeader ("Expires", 0);  
      %> 
1.2.3字符编码设置

○ 对纯html文件,在标签内加如下
--告诉浏览器,用UTF-8解析页面
○ 对JSP代码,在 加:
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%> --服务器用pageEncoding指定的编码把jsp文件翻译成JAVA源码(后面再由pageEncoding指定的编码转换为字节码的UTF-8 )
<%@ page contentType=”text/html;charset=UTF-8”%> --告诉浏览器,用UTF-8解析页面



2.B/S架构-控制层

涉及到的内容如下:

• 控制器〔控制层〕设计
• Servelt名称、URL
    需要接收的参数
    封装数据的值对象
• 业务层接口
        页面跳转
        跳转方式:请求转发|页面重定向
        参数传递:参数名称、参数共享方案〔页面、会话、全局〕
        是否考虑Cookie关闭的影响|URL重写。

2.1 获取Servlet的配置信息

2.2 Servlet内流程控制

• 转发与包含 
请求转发是Servlet(源组件)先对客户端请求做一些预处理操作,然后把请求转发给其它Web组件来(目标组件)完成生成响应结果在内的后续操作。
请求包含是Servlet(源组件)把其他Web组件(目标组件)生成的响应结果包含在自身生成的响应结果中。 
• 重定向是服务器对客户端的请求做出响应,响应的结果是让客户端浏览器去重新发出对另外一个URL的访问请求。

方式1:RequestDispatcher
调用getRequestDispatcher(URI);
Forward(request,response);转发
方式2:Response.sendRedirect();
○ 注意:可以重定向到任意WEB应用中的Servlet、Jsp和Html。与目的资源只共享Session。在浏览器地址栏显示目的地址。
○ 可以通过URL地址和HttpSession对象传递数据到目的资源。URL地址后附加的中文数据需要用URLEncoder.encode()方法编码。
○ 如果考虑浏览器关闭Cookie,应该对URL用response.encodeRedirectURL()方法编码。


3.会话跟踪

3.1会话与会话跟踪:

从浏览器第一次访问某一个站点开始,到浏览器关闭这段时间内,浏览器与站点服务器之间的多次“请求-应答”操作称为一个会话。
一次“请求-应答”由一个连接完成;一个会话可能出现由多个连接组成。一个连接结束后,该连接被关闭。
服务器如何区分来自浏览器的多个连接哪些是同一个浏览器(即同一个用户)发出的?即服务器如何追踪一个用户的一些列访问?
服务器端跟踪浏览器连接访问的技术称为会话跟踪。会话跟踪的本质是在多个请求中保存用户的属性(状态),也成为状态管理。

方式1:通过隐藏字段,在表单中附加隐藏type=”hidden”
方式2:使用Cookie技术–通过Cookie存放用户身份信息,服务器可以追踪用户,不安全,会因为用户关闭而失效
方式3:使用Session对象
这里写图片描述

数据存取:
    serAttribute(name,value);
    getAttribute(name); Object要做类型转转
    removeAttribute(name)
Session失效
    Invalidate():立即失效,数据丢失
    setMaxInactiveInterval(int inteval);设置会话失效的最长时间
【注】如果咩有设置失效时间间隔,缺省浏览器关闭后就失效。
可预防访问攻击-----(这个不懂)

方式4URL地址重写
把Session的ID直接附加到要访问的各个URL后面。
Response.encodeURL(URI):在URI后面加上Session ID;
Response.encodeRedirectURL(URL):在URI后面加上Session ID,专门为重定向服务。
评价:与Session合用,完美方案,

这里写图片描述
这里写图片描述


4 过滤器

○ 过滤器是驻留在服务器端的Web组件,它可以截取客户端和服务器目标资源之间的请求和响应信息,并对这些信息进行处理。
○ 过滤器是请求到达一个目标资源前的预处理程序,和/或响应离开目标资源后的后处理程序。
○ 利用过滤器可以实现多种功能,例如编码转化、数据过滤和替换、身份验证、数据加密、数据压缩、日志记录等。

4.1过滤器解决中文乱码问题

     对Post方法提交的数据,在调用request对象的getParameter()和getParameterValues获取参数值前,先调用setCharacterEncoding(charset),可以解决中文乱码问题,但对于GET方法提交的数据无效。最好的解决方案是使用基于包装器的过滤器。


5 关于地址的一些问题:

5.1 路径

路径的基本概念
在Java Web开发中,路径分为绝对路径和相对路径
绝对路径
为某一资源(HTML、JSP或Servlet)在服务器上的真正的路径,即物理路径。
相对路径
为相对与某个基准目录的路径。在Servlet中,“/”代表Web应用的根目录,“./”代表当前目录,“../”代表当前目录的上一级目录。

1)链接地址、表单提交、重定向、转发的路径四种情况

<a href=""></a>
<form action=" "></form>
Request.getDispatcher();
Response.sendRedirect();

2)两种路径表示方法

相对路径 : <a href="xxx.do"></a>
【说明】好几次看到好友写.do后缀的链接,后来查看一下原来这是struct框架定义的,表示交给Servlet处理的意思;
绝对路径:<a href="/project/xxx.do"></a>

6.Servlet的共享变量(这个地方还不太清楚,需要进一步学习)

这里写图片描述


7 jsp

JSP标签-指令
taglib指令:导入标签库
<%@taglib uri="" prefix=""%>
jsp标签-动作
jsp标签-

7.1 jsp中隐含的对象

Request\response\out\seesion\application\page\config
隐含的session对象
这里写图片描述
客户首次访问服务器上的JSP页面时,JSP引擎产生session对象,并分配给它一个String类型的ID,并将其发送到客户端存入Cookie中,这样session对象和客户端之间建立了一一对应关系,客户在该服务器不同网页间转换或从其他服务器回到该服务器时,不分配给客户新的session,直到客户关闭浏览器,分配给客户的session对象被取消。
如果客户端不支持Cookie,服务器无法将session ID写到客户端。服务器无法识别同一个客户端。解决该问题的有效方法是URL重写技术。

str=response.encodeURL("id2_1.jsp");
<a href="<%=str%>"></a>

保存和获得session对象中的数据是JSP页面常做的工作,需要使用getAttribute()和setAttribute()方法。

隐含对象application:全局变量
page对象:相当于this,表示jsp页面本身,servlet的一个实例

8 EL表达式:代替jsp中输出表达式<%= %>

EL表达式以 < {表达式}
EL可以访问或获取作用域(pageScope、requestScope、sessionScope、applicationScope)中的对象
${范围.对象.Key} – 用于HashMap对象或JavaBean

${范围.对象[属性]}—通用
如果缺省范围,则哪找从小到大的范围顺序去搜索对象


9 关于web开发一些其他技术:ajax\js\jquery

Ajax(Asynchronous javascript and xml)使用js,xml,css,dom,json实现浏览器xiangweb服务器发送一步请求,可局部刷新页面

• 使用JavaScript对象XMLHttpRequest模拟浏览器,向Web服务器发出Http请求,同时创建一个Ajax引擎来监视Web服务器的响应。
• 当Ajax引擎监视到Web服务器的响应结束后,使用JavaScipt代码基于响应信息〔Txt串、XML文档、JSON对象〕操纵页面的DOM树,从而实现页面的局部刷新。

猜你喜欢

转载自blog.csdn.net/Alearn_/article/details/80525442