web专题 JSP介绍 + MVC 设计模式 + JSP指令 + EL表达式

什么是JSP

在早一点的网络项目中写网络页面是使用 .JSP 为后缀的文件来写网页的,因为可以在 JSP 中写Java代码,所以在早些时候是相当受追捧的产物。

JSP全称为 Java服务器页面。

JSP运行原理

当把项目中的JSP部署到tomcat等服务器上之后,其运行过程其实是这样的

tomcat编译虚拟机 把jsp文件变成成java文件 jvm 变成.class

打开tomcat会看到如下效果在这里插入图片描述
和在servlet里面拼接html写法相同

说白了你会发现 jsp本质上就是一个servlet

在这里插入图片描述

Servlet和JSP的异同【经典面试题】

相同点
都是servlet响应前台的内容,在拼接html方式都是一样的,请求和响应方法一样

不同点
Servlet:继承httpServlet
Servlet设计初衷是为了变成控制层
直接执行java代码

Jsp
继承HttpJspBase
Jsp设计初衷是为了视图层,完美显示页面的
Jsp必须要经过tomcat编译成java文件

Jsp本质上就是一个servlet

MVC设计模式

Jsp本质上就是servlet,也就是说我所有的代码都可以写在jsp上面,这个时候会导致代码非常混乱

Jsp黑历史:
早期开发model1 时代,混乱时代,早期的程序员对jsp的崇拜达到了疯狂的程度,所有的代码全部放在jsp中,那是一个混乱的时代,民不聊生,寸草不生,惨绝人寰
这时候耦合度非常高,你想后期维护修改,比登天还难

在这里插入图片描述
JSP中写Java规则如下

<% java代码 %>

<%= 输出变量 %>在页面输出内容 相当于System.out.print 在控制台输出

注释:java代码注释方式相同,

整体注释<%-- 注释内容—%>

<%! 全局变量的声明 %>

Mode2时代

mvc这种思想,解耦 把每一层分门别类的去书写
相继出现:servlet,Struts,springmvc
前台页面只放html不能再去放java代码,一直到现在mvc深入人心

M:model 模型层 java代码,dao ,service,servelt
V: view 视图层 html,jsp,asp…
C:controller 控制层 servlet,springmvc --contorller

什么是MVC【经典面试题】

MVC是model2中出现的一个设计模型,将原有的JSP能够编写各种代码的model2转化为分层管理的model2. 将功能分为视图、模型及控制器,达到了一个解耦合的目的。

这里看一下专业的解释
在这里插入图片描述

JSP指令

Jsp的三大指令

Page :对jsp的描述
Include:页面包含
Tablib:标签库 相当于java import

Page指令
在这里插入图片描述
errorPage=“error.jsp” 指定报错页面

Include
将某一jsp页面作为当前页面的一部分

在这里插入图片描述
Taglib指令
<%@taglib uri="" prefix=“c” %>

EL表达式

EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。

${ 表达式}

在这里插入图片描述

<%@page import="java.util.HashMap"%>
<%@page import="com.ujiuye.bean.FoodBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	${"随便一句话"}
	${3>9 }
	${5%3 }
	${3>5 or  5>3 }
	${3>5?"成立":"不成立" }
	<br>
	<%
		FoodBean food=new FoodBean(100, "方便面","生吃", "大地", "方便面真好吃"); 
		request.setAttribute("food", food);
		
		HashMap map=new HashMap<>();
		map.put("name", "张三");
		map.put("psw", "123456");
		request.setAttribute("m", map);
	%>
	${food.fid}
	${food.fname }
	${food.eatType }
	${food.city }
	<div>
		<font  color="red">${food.des }</font>
		<a href="http://baidu.com?fid=${food.fid}">百度</a>
		<input value="${food.eatType }">
	</div>
	<div></div>
	${m.name }
	${m.psw }
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值