SERVLET JSP篇-04 JSP特性、MVC设计模式、EL、JSTL

一、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.*"%>
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>查询员工</title>
	</head>
	<body>
		<table border="1" cellspacing="0" width="40%">
			<tr>
				<td>编号</td>
				<td>姓名</td>
				<td>职位</td>
				<td>月薪</td>
			</tr>
			<%
				List<Emp> list=(List<Emp>)request.getAttribute("emps");
				if(list!=null){
					for(Emp e:list){
			%>
			<tr>
				<td><%=e.getEmpno() %></td>
				<td><%=e.getEname() %></td>
				<td><%=e.getJob() %></td>
				<td><%=e.getSal() %></td>
			</tr>
			<% 
					}
				}
			%>
		</table>
	</body>
</html>

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"%>
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>EL和JSTL</title>
	</head>
	<body>
		<h1>JSTL</h1>
		<!-- 1.if -->
		<p>
			<c:if test="${stu.sex=='M'}">男</c:if>
			<c:if test="${stu.sex=='F'}">女</c:if>
		</p>
		<!-- 2.choose -->
		<p>
			<c:choose>
				<c:when test="${stu.sex=='M'}">男</c:when>
				<c:otherwise>女</c:otherwise>
			</c:choose>	
		</p>
		<!-- 3.forEach  items:声明遍历的数据  var:给每次循环所获得数据命名-->
		<p>
			<c:forEach items="${stu.interests }" var="i">
				${i }
			</c:forEach>
		</p>
		<h1>EL</h1>
		<!-- 1.获取Bean属性 -->
		<!-- -request.getAttribute("stu").getName() -->
		<p>姓名:${stu.name}</p>
		<!-- -request.getAttribute("stu").getAge() -->
		<p>年龄:${stu["age"]}</p>
		<!-- -request.getAttribute("stu").getCouse().getId() -->
		<p>课程id:${stu.course.id}</p>
		<!-- EL的取值范围:
		1.EL默认从如下4个对象中依次取值取值page、request、session、application,这4个隐含对手是EL默认的取值范围 
		2.也可以指定取值范围requestScope.stu.name/sessionScope.stu.name
		3.设计默认取值的目的是为了开发者经常写范围,为了简化EL表达式-->
		<p>性别:${requestScope.stu.sex }</p>
		
		<!-- 2.支持运算 -->
		<p>年龄+5:${stu.age+5 }</p>
		<p>20-30间:${stu.age>20 && stu.age<30 }</p>
		<p>判空:${empty stu }</p>
		
		<!-- 3.获取请求参数 -->
		<p>参数:${param.user }</p>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值