JSP

65 篇文章 0 订阅
64 篇文章 0 订阅

##JSP页面组成
1. JSP指令
指令标签不会产生任何内容输出到网页中,主要是用来设置jsp页面的相关信息,用的什么语言.导入的类库,字符集…
<%@ 指令名称 属性名称=“value”…%>
指令名称 : page,include,taglib
属性名称 :
1. language 指定当前页面嵌套的语言
2. contentType 设置jsp编译后网页的字符集
3. pageEncoding 设置页面的字符集
4. import 导入的类库
2. 小脚本
<%
Java代码(和java代码规范一致)
%>
每行后面必须添加分号
3. 表达式
<%= %>
不允许添加分号.将表达式的结果输出的jsp页面中.表达式的最终结果都会被转换成字符串.
4. 声明
在声明中编写的所有代码全部是全局代码,将存在类中,而不是方法中
<%! %>
5. 注释
(1) html注释
(2) JSP注释 <%-- --%>
(3) java注释 // /* */

##JSP 的执行流程
当用户通过浏览器访问服务器的时候
	1. 找到jsp文件由Tomcat翻译成java文件,将翻译后的文件发送到work文件下
	2. 将java文件编译成class字节码文件
	3. 执行class字节码文件,输出给客户端

只有第一次访问或修改jsp文件,Tomcat才会重新翻译和编译,当没有改变的时候,不会对以编译的文件进行修改

web项目中 WEB-INF先得所有内容,客户端都不可访问

内置对象

1. request
	1. javax.servlet.HttpServletRequest的实例
	2. 该对象封装了一次请求,客户端的请求参数都被封装在该对象中,这是一个常用对象
	3. getParameter(String parmName) : 获取请求数据
	4. getParameterValues(String paramName) : 获取相同名称的多个值
	5. setCharacterEncoding() : 设置一次请求的字符集
	6. getParameterMap() : 获取请求的所有数据(key-values) key = 表单的name,values = 获取的数组 
	7. getHeaderNames() : 获取客户发送过来的请求头中的所有信息
	8. getRemoteAddr() : 获取请求客户端的地址(ip:port)
	9. getRemoteHost() : 获取ip地址
	10. getRemotePort() : 获取端口号
	
2. response
	1.sendRedirect("url");
	2.setHeader()
	3.addCookie()
	4.setCharcterEncoding()
3. session
	1. 对象代表一次用户会话,一次用户会话的含义 : 从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止(关闭浏览器)
	2. session通过用于跟踪用户会话,购物车中使用..
	3. session范围内的属性可以在多个页面跳转之间共享,一旦关闭浏览器,session就结束,将丢失所有数据
	4. setAttribute("attrName,attValue)
	5. getAttribute(attrName)
	6. invalidate
	7. session.setMaxInactiveInterval(interval)
	8. session.getId()
4. pageContext
	1. 存储在内能只能被自身使用
5. **out**
	1. append() 
	2. clear() 清空要输出的内容
	3. println()/print() 向客户端输出
	4. .....
6. config
	1. 封装了配置在web.xml文件中初始jsp(servlet)的参数
	2. getInitParameter()
	3. getServletName()
	4. getInitParameterNames()
7. exception
	1. 必须设置 <%@ isErrorPage="true"%> //开启异常
	2. <%@ errorPage="url"%> //处理页面地址
8. page
	1. 当前页面的this对象
9. *application*
	1. 跟随服务器销毁,所有用户可以共享使用

转发和重定向

页面跳转
1. 转发跳转可以将request对象中的内容共享到下一个页面
2. 重定向跳转不能将request对象中的内容共享到下一个页面
3. 转发地址不变,重定向地址改变
4. 重定向请求2次
5. 转发是在服务器内部跳转

区别

转发使用getRequestDispatcher().forward();重定向使用sendRedirect()
转发 : 浏览器URL的地址栏不变,重定向 : 浏览器URL地址栏改变
转发是服务器内部的执行操作,重定向是客户端的执行操作
转发是浏览器只请求一次 , 重定向浏览器请求了2次
转发跳转request信息不会丢失, 重定向2次跳转request的信息会丢失

选择

重定向的速度比转发慢,因为浏览器还得发送一个新的请求. 如果2个都无所谓的时候,推荐使用转发
转发只能访问当前web项目下的所有页面.如果需要访问不同项目中的页面必须使用重定向
##有状态的会话
一个同学来过教师,下次再来教师,我们知道这个同学曾经来过,这称为有状态会话
##Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。
当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

1. Cookie(String name, String value) 实例化Cookie对象,传入cooke名称和cookie的值
2. public String getName() 取得Cookie的名字
3. public String getValue() 取得Cookie的值
4. public void setValue(String newValue)  设置Cookie的值
5. public void setMaxAge(int expiry)

设置Cookie的最大保存时间,即cookie的有效期,当服务器给浏览器回送一个cookie时,如果在服务器端没有调用setMaxAge方法设置cookie的有效期,那么cookie的有效期只在一次会话过程中有效,用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一次会话,当用户关闭浏览器,会话就结束了,此时cookie就会失效,如果在服务器端使用setMaxAge方法设置了cookie的有效期,比如设置了30分钟,那么当服务器把cookie发送给浏览器时,此时cookie就会在客户端的硬盘上存储30分钟,在30分钟内,即使浏览器关了,cookie依然存在,在30分钟内,打开浏览器访问服务器时,浏览器都会把cookie一起带上,这样就可以在服务器端获取到客户端浏览器传递过来的cookie里面的信息了,这就是cookie设置maxAge和不设置maxAge的区别,不设置maxAge,那么cookie就只在一次会话中有效,一旦用户关闭了浏览器,那么cookie就没有了,那么浏览器是怎么做到这一点的呢,我们启动一个浏览器,就相当于启动一个应用程序,而服务器回送的cookie首先是存在浏览器的缓存中的,当浏览器关闭时,浏览器的缓存自然就没有了,所以存储在缓存中的cookie自然就被清掉了,而如果设置了cookie的有效期,那么浏览器在关闭时,就会把缓存中的cookie写到硬盘上存储起来,这样cookie就能够一直存在了。

6. public int getMaxAge()
7. public String getDomain()

JavaBean

现在所有的代码全部都是在jsp中包含,,这样功能可以实现(简单)但是页面却显得凌乱.
为了将代码进行剥离,需要使用分层的概念
JavaBean 就是普通的java类,也被称为POJO(Plain Ordinary Java Object:普通java对象)
JavaBean 类职业添加私有属性,公有的get/set 无参构造
		 数据访问层,业务层中编写的类都是封装业务的.

分层

三层架构
	从下之上,数据访问层,业务逻辑层,视图层(表示层)->高内聚低耦合
	1. 数据访问层(DAO层) : 与底层数据,mysql,oracle,hbase,excel,文本文件 进行数据交互
	2. 业务层(service层) : 对第三方平台封装的层,预处理返回结构和转换异常信息,添加缓存,查询缓存.与dao层交互,对dao层通用能力的封装
	3. 视图层(view层,web层) : 对访问权限的控制,页面的转发跳转,数据的展示,基本参数的校验,不复用的业务简单逻辑代码

分层领域模型

DO(entity) : 与数据表一一对应的实体类.,通过dao层向上传递的数据源对象
DTO : 数据传输对象,将多个实体类或service层封装的新对象,传输给视图层使用的
BO : 业务对象,service层封装的实体类对象,给其他业务层使用
QUERY : 数据查询对象,各层接收上层的查询请求,当超过2个参数的查询封装,禁止使用map传递的时候!推荐使用类
VO : 业务层返回给视图层渲染使用的对象


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值