博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SERVLET JSP篇-04 JSP特性、MVC设计模式、EL、JSTL
阅读量:1887 次
发布时间:2019-04-26

本文共 2215 字,大约阅读时间需要 7 分钟。

一、jsp是如何执行的?

step1,

容器将jsp文件转换成一个servlet类。

html(css,js)   ----->  service方法里,使用

out.write输出。

<%java语句;%> -----> service方法里,照搬。

<%= java表达式%> --->service方法里,使用

out.print(java表达式)输出。

step2,容器调用servlet。

 

二、jsp隐含(内置)对象

1.request

-HttpServletRequest

2.response

-HttpServeltResponse

3.out

-JSPWriter类似于PrintWriter

4.config

-ServletConfig

5.application

-ServletContext

6.exception

-Throwable

-jsp翻译成的Servlet所抛出到异常

7.session

-httpsession

8.page

-Object相当于this,用来指代翻译成的那个Servlet

9.pageContext

-是管理者,通过它可以获取其他8个隐含对象

 

三、如何在jsp上使用隐含对象呢?

<%Object user=session.getAttribute(“user”);%>

<%=session.getAttribute(“user”)%>

 

 

 

四、设计模式

1.Model 1

 

 

<%@page pageEncoding="utf-8"  contentType="text/html; charset=utf-8" import="entity.*,java.util.*"%>			
查询员工
list=(List
)request.getAttribute("emps"); if(list!=null){ for(Emp e:list){ %>
<% List
<% } } %>
编号 姓名 职位 月薪
<%=e.getEmpno() %> <%=e.getEname() %> <%=e.getJob() %> <%=e.getSal() %>

2.MODEL 2

 

引入了MVC

模式,是代码的分层思想:

M:model 业务层,用来处理业务 (DAO)

V:view 视图层,用来展现数据  (JSP)

C:control 控制层,用来进行调度,是业务层和视图层的桥梁(Servlet)

其目的是要将代码解耦,便于团队开发及维护。

五、转发和重定向

1.转发和重定向的相同点:都是解决web组件之间的跳转问题

web组件:servle/jsp

 

2.转发和重定向的不同点:

转发:依赖时用转发

重定向:不依赖时用重定向

 

3.官方解释

转发:

1)一次请求;地址不变;

2)一个请求只有一个request

3)a和b可以通过它共享数据

4)只能转发到项目内部的资源

 

 

 

 

重定向:

1)2次请求 .地址改变

2).两个请求有两个request

3)a和b无法通过它共享数据

4)可以重定向到项目外部的资源

 

4.一般情况:

查询时用转发

增加、修改、删除后重定向到查询

 

六、EL表达式

见例子

1.取Bean

2.运算

3.获取请求参数

 

七、JSTL

step1:将JSTL标签对应的jar文件拷贝到WEB-INF/lib目录下

step2:使用taglib指令导入要使用的JSP标签

<%@atglib uri=”” prefix=””%>

uri:;JSP标签的命名空间

prefix:命名空间的前缀

 

 

 

 

<%@page pageEncoding="utf-8" %><%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>			
EL和JSTL

JSTL

${i }

EL

姓名:${stu.name}

年龄:${stu["age"]}

课程id:${stu.course.id}

性别:${requestScope.stu.sex }

年龄+5:${stu.age+5 }

20-30间:${stu.age>20 && stu.age<30 }

判空:${empty stu }

参数:${param.user }

你可能感兴趣的文章
OpenCV+python识别并打印HSV颜色
查看>>
2021-03-29
查看>>
网络攻击与防御--引言
查看>>
网络攻击与防御--网络协议漏洞
查看>>
sql注入: 判断注入点类型
查看>>
千人千面Elasticsearch实战学习笔记
查看>>
最大子数组问题(递归)(java)
查看>>
2021年第十二届蓝桥杯软件赛省赛第二场 C/C++ 大学 A 组
查看>>
2020年哨兵数据批量下载(USGS)
查看>>
简单3步快速生成千万级别mysql测试数据库,模拟电商数据
查看>>
EasyDSS平台接入设备量过多的情况下如何进行批量推流测试?
查看>>
mysql数据库操作基础
查看>>
Mariadb基础管理
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本--- 部署说明
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本--- 环境准备及初始化
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本---docker私有镜像仓库配置
查看>>
mysql 中com.mysql.jdbc.PacketTooBigException 解决办法
查看>>
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
查看>>
CentOS系统内核升级攻略
查看>>
linux系统时区修改(Debian的主机和docker)
查看>>