jsp
    工作原理(servlet)                  脚本注释                  指令
    内置对象                                 动作标签

MVC模式

一.JSP

HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态
内容的显示。为了与传统HTML有所区别,JSP文件的扩展名为.jsp。
JSP技术所开发的Web应用程序是基于Java的,本质上就是一个Servlet , 它可以用一种简捷而快速的方法从Java程序
生成Web页面,其使用上具有如下几点特征:
跨平台:由于JSP是基于Java语言的,它可以使用Java API,所以它也是跨平台的,可以应用于不同的系统中,
如Windows、Linux等。当从一个平台移植到另一个平台时,JSP和JavaBean的代码并不需要重新编译,这是因
为Java的字节码是与平台无关的,这也应验了Java语言“一次编译,到处运行”的特点
业务代码相分离:在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用
HTML来设计界面,使用JSP标签和脚本来动态生成页面上的内容。在服务器端,JSP引擎(或容器,本书中指
Tomcat)负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回到浏览器。
组件重用:JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一
个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以
应用到其他Java应用程序中。
预编译:预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一
次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的
CPU资源,还大大的提升了客户端的访问速度。
(1)初体验:
在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。 为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)​   JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,页面动态资源使用java代码,页面静态资源使用html标签。简单来说:可以在html标签中嵌套java代码作用:简化书写,展示动态页面入门:
在jsp页面,动态展示当前时间<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>${NAME}</title></head><body><%Date date = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String currentTime = simpleDateFormat.format(date);%><h3><% out.write(currentTime);%></h3></body>
</html>
总结:
1. jsp之所以可以编写html代码,其实本质上也是类似我们使用Servlet直接输出的。
2. jsp之所以能够直接使用request对象,是因为我们自己编写的代码全部都落入到了service方法内部,在service方
法内部一开始就已经声明了request,response,session,application(ServletContext)等对象了,这些对象成为之jsp内
置对象。

(2)工作原理:

JSP本质上就是一个Servlet

(3)脚本和注释
脚本:
-1.JSP通过脚本方式来定义java代码
1. <% 代码 %>脚本片段,生成在service方法中,每次请求的时候都会执行2. <%! 代码 %>声明片段,在java代码中声明成员,放在jsp生成java文件中的成员位置3. <%=代码 %>输出脚本片段,相当于out.print("代码") 方法,输出到jsp页面

-2.注释:

1. html注释<!-- 注释静态资源 -->2. JSP注释<%-- 注释所有 --%>3. java注释(JSP脚本内使用)// 单行/* 多行 *//**文档 */

注释作用范围

(4).指令:

* 作用用于配置JSP页面,导入资源文件
* 格式<%@ 指令名称 属性名1="属性值1" 属性名2="属性值2" ...%>* 三大指令1. page:配置JSP页面2. include:页面包含(静态)3. taglib:导入资源文件
  • page指令
<%@ page contentType="text/html;charset=UTF-8" language="java" %>contentType 相当于 response.setContentType(); 设置响应体的MIME类型和编码方式language    目前仅支持java语言import      导入jar包<%@ page import="java.util.Date" %>pageEncoding
该属性的作用是:指定当前jsp页面的编码。这个编码是给服务器看的,服务器需要知道当前页面的编码,否则服务器无法正确的把jsp翻译成Java文件。
extends
它用于设置jsp翻译后的java类的父类. 要求必须是HttpServlet或其子类Session
面上是否禁用session。可取值为true/false 如果值为false,在页面上不能使用session。
isELIgnored
用是否忽略el表达式.可取值为true/false 如果值为true,那么页面上的el表达式就不会被解析.errorPage   当前页面报错后,跳转指定错误提示页面isErrorPage 声明当前jsp页面是一个异常处理页面,打开异常开关false(默认)true:可以操作exception异常对象<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="500.jsp" %>
<html>
<head><title>demo2</title>
</head>
<body>
<h3>page指令</h3>
<%new Date();new SimpleDateFormat();Integer age = 1 / 0;
%>
</body>
</html>异常处理页面<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head><title>500</title>
</head>
<body>
<h4>服务器繁忙,请稍后重试....</h4>
<%// 获取错误信息,发送程序员,进行处理。。。out.print(exception.getMessage());
%>
</body>
</html>
pageEncoding与contentType的区别与联系
pageEncoding与contentType都是page指令的属性,它们都是用来设置编码,有如下联系:
如果这两个属性只提供了其中一个,那么没有提供的那个属性的编码值就是提供的这个属性的编码值,例如:在jsp
页面中设置了contentType=”text/html;charset=utf-8”,那么没有设置的pageEncoding的值就为utf-8,反之亦然;
如果两个属性都没有提供,那么两者的默认编码就是ISO-8859-1。
根据对这两个属性的讲解,它们有如下区别:pageEncoding是设置当前页面的编码,该编码是给服务器看的,可以让服务器正确的将jsp文件翻译成Java文件;
contentType有两个作用:一是设置响应字符流的编码,二是设置Content-Type响应头,即通知浏览器使用什么编码
方式解码响应信息。
  • include指令-静态包含

top.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>top.jsp</title>
</head>
<body>
<div style="border: skyblue dashed 5px;height: 100px">头部</div>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>demo</title>
</head>
<body>
<%@include file="top.jsp"%>
<div style="border: red solid 5px;height: 400px">我是include静态包含,主体..</div>
</body>
</html>
include指令作用
include指令的作用是在JSP页面中静态包含一个文件,同时由JSP解析包含的文件内容
include指令格式
<%@ include fifile=“fifilename” %>
include指令功能分析
包含的是目标文件的源码;包含过来,一起翻译

  • taglib指令
首先要导入jar包:
通过taglib指令引入:
 taglib指令作用
作用:是用于导入标签库.
 taglib指令格式
<%@taglib prefifix="" uri="" %>
uri 标签文件的URI地址
prefifix 标签组的命名空间前缀

(5)内置对象

* 作用在JSP页面中不需要获取和创建,可以直接使用的对象* JSP一共有9个内置对象变量名          真实类型                作用pageContext        PageContext        当前页面中共享数据(域对象)request         HttpServletRequest       一次请求中共享数据(域对象)session             HttpSession        一次会话中共享数据(域对象)application         ServletContext       整个web应用共享数据(域对象)-----------------------------------------------response          HttpServletResponse 响应对象page(this)        Object              当前页面(servlet)对象out                 JSPWriter            输出对象config              ServletConfig            servlet配置对象exception           Throwable           异常对象(默认关闭...)
注意:exception对象只有在jsp页面上设置了page指令的isErrorPage才会有exception对象。
* 常用1. pageContext1)当前页面的域对象2)获取其他八个内置对象2. request1)接收用户请求(参数)2)一次请求中域对象3. response1)设置响应字节流字符流4. out1)专门在jsp中处理字符流print(); // 可以输出一切类型write(); // 只能输出字符类型

(6)jsp动作标签

* 作用简化JSP页面编码* 常用<jsp:include>:页面包含(动态)相当于request.getRequestDispatcher().include(request,response);<jsp:forward>:请求转发(页面跳转)相当于request.getRequestDispatcher().forword(request,response);<jsp:param>:参数传递其实这是forward子标签使用request.getParameter() 获取参数
动态包含:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>demo6</title>
</head>
<body>
<jsp:include page="top.jsp"></jsp:include>
<div style="border: green solid 5px;height: 400px">jsp的动态包含,主体</div>
</body>
</html>

静态包含和动态包含的区别:

在企业开发时,我们推荐使用静态包含,提升访问性能;注意:不能出现重名的变量。。。

请求转发

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>a</title>
</head>
<body>
<%System.out.println("a.jsp执行了");request.setAttribute("username", "request域存值了");
%>
<jsp:forward page="b.jsp"><jsp:param name="name" value="ack"></jsp:param><jsp:param name="age" value="18"></jsp:param>
</jsp:forward>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>b</title>
</head>
<body>
<%System.out.println("b.jsp执行了");// request域传递System.out.println(request.getAttribute("username"));// param标签传递System.out.println(request.getParameter("name"));System.out.println(request.getParameter("age"));
%>
</body>
</html>

总结:

jsp中四个域对象
jsp有四个域对象,分别是:application:域范围是整个应用;session:域范围是整个会话,注意一个会话中只有一个用户,如果要统计站点的访问次数,使用的域是
ServletContext,因为这个时候统计的是多个用户,而非一个用户;request:域范围是整个请求链;pageContext:域范围是一个jsp页面,在一个页面中存数据再取数据没有任何意义,所以这里所说的域指的是在当前jsp页面和当前jsp页面中使用的标签之间共享数据。

jsp动作标签:

JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代
码,造成jsp页面难以维护。
Jsp中常用动作标签jsp:forward
jsp:forward标签是用来做请求转发,它与RequestDispatcher接口的forward()方法一样,唯一不同的是它是在jsp页
面中使用。jsp:param
jsp:param标签作为jsp:forward标签和jsp:include标签的子标签,用来给转发或包含的页面传递数据。

二.MVC模式,思想

1.早期只有Servlet,只能使用response输出html标签,非常麻烦:

2、后来有了jsp,简化了Servlet开发,如果过度使用jsp。同样在jsp页面写了大量的java代码和html标签,造成了代码难以维护,难于分工协作的场景》

3,后来为了弥补过度使用jsp的问题,我们使用servlet+jsp这套组合拳,利于分工协作。

4。mvc介绍:

MVC设计模式: Model-View-Controller简写。

MVC是软件工程中的一种软件架构模式,它是一种分离业务逻辑显示界面的设计方法。

简单来说:前人们总结的一套设计经验,适合在各种软件开发领域,目的:高内聚,低耦合

* M:model(模型) JavaBean(1.处理业务逻辑、2.封装实体)* V:view(视图)  Jsp(展示数据)* C:controller(控制器)Servlet(1.接收请求、2.调用模型、3.转发视图)* 优缺点优点降低耦合性,方便维护和拓展,利于分工协作缺点使得项目架构变得复杂,对开发人员要求高

JavaWeb = JSP详解相关推荐

  1. JavaWeb Cookie详解

    代码地址如下: http://www.demodashi.com/demo/12713.html Cookie的由来 首先我们需要介绍一下,在Web开发过程中为什么会引入Cookie.我们知道Http ...

  2. JAVAEE和项目开发——JSP详解

    jSP详解 主要内容 JSP介绍 JSP运行原理 JSP的使用 学习目标 一.JSP简介 1 JSP介绍 JSP(全称 Java Server Pages)Java服务端页面技术,是JavaEE平台下 ...

  3. Servlet与jsp详解

    Servlet与jsp详解 一.Servert 概念:运行在服务器端的小程序 1.servlet就是一个接口,定义了java类被浏览器访问到的规则 2.将来我们自定义一个类,实现该接口,复写方法 快速 ...

  4. JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

    Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的ses ...

  5. Mac下Intellij IDea发布JavaWeb项目 详解一 (1、新建JavaEE Project并进行相应设置 2、配置tomcat)...

    IDEA中 javaWeb项目的创建和tomcat配置(完整) 1.先新建JavaEE Project并进行相应设置 2.在配置tomcat Step1 新建JavaEE Project并进行相应设置 ...

  6. 遇见狂神说JavaWeb笔记详解

    写在最前面,这篇博客为观看学习狂神javaweb所写,记录下来及时复习以及分享. 文章目录 1.基本概念 2.web服务器 3.Tomcat 4.Http 5.Maven 6.Servlet 1.基本 ...

  7. 第二部分_搭建Java Web开发环境与配置Tomcat服务器JSP详解

    MyEclipse集成Tomcat 首先配置Tomcat,即配置环境变量Java_HOME.path,在第一讲中已经完成了,不再赘述. Eclipse代码风格导入MyEclipse: 每个项目都要配置 ...

  8. javaWeb服务详解(含源代码,测试通过,注释) ——web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" ...

  9. javaWeb服务详解(含源代码,测试通过,注释)

    javaweb服务分为两个部分,一部分是web服务端,另一部分就是你调用的客户端了.首先我说下实现web服务的简单思路: 一.服务器端实现: 1.添加webservice  jar包 spring支持 ...

最新文章

  1. Java基础 Day07(方法)
  2. 继承关系中的拷贝构造函数和赋值操作重载函数分析
  3. Java ServletContextListener用法
  4. 初来乍到?请多关照==23333
  5. python怎么让输出的数字右对齐_python(格式化输出)
  6. javascript --- [express+ vue2.x + elementUI]登陆的流程梳理
  7. -%3erow mysql_MySQL查询优化
  8. 七个重要习惯——读《高效能人士的七个习惯》整理
  9. jmeter找不到java.dll_Windows下Jmeter安装出现Not able to find Java executable or version问题解决方案...
  10. 1.C#基础之简介(完成)
  11. Element中 el-tag 点击事件 el-tag添加@click事件无效
  12. linux重启后mysql无法启动_Linux重启后MySQL数据库文件全部丢失MySQL无法启动
  13. FeignClient与RestTemplate的区别
  14. 2个月面了鹅厂的5个部门,心态差点奔溃了......
  15. 模态 - block
  16. EpiDope:用于线性B细胞表位预测的深度神经网络
  17. 学一点Wi-Fi:WEP
  18. win10计算机证书管理器,win10系统iE浏览器导入数字证书的详细办法
  19. python一元二次方程组
  20. android控件翻书效果,android ViewPager实现滑动翻页效果实例代码

热门文章

  1. 考勤月度统计mysql_mysql中跨月统计考勤天数-问答-阿里云开发者社区-阿里云
  2. VI/VIM 编辑器常用操作
  3. JavaScript特效源码(8、其他特效)
  4. 刷百度下拉那个词与百度快排点击原理是什么?做快排网站降权怎么办?
  5. 单片机转嵌入式Linux的思考
  6. linux下使用iptable单网卡实现Nat共享上网
  7. 数据库原理课后答案 第六章
  8. python是哪种动物_动物的分类
  9. pyQT 弹簧(QSpacerItem)的功效
  10. 纯CSS实现枫叶下落