广东网站建设微信网站定制,佛山百度推广电话,网络工程考研考什么科目,365房产南京网站文章目录 1.JSP介绍2 JSP快速入门3 JSP 脚本3.1 JSP脚本案例3.2 JSP缺点 4 EL表达式4.1 快速入门案例 5. JSTL标签6. MVC模式和三层架构6.1 MVC6.2 三层架构 7. 案例-基于MVC和三层架构实现商品表的增删改查 1.JSP介绍 概念 JSP#xff08;JavaServer Pages#xff09;是一种… 文章目录 1.JSP介绍2 JSP快速入门3 JSP 脚本3.1 JSP脚本案例3.2 JSP缺点 4 EL表达式4.1 快速入门案例 5. JSTL标签6. MVC模式和三层架构6.1 MVC6.2 三层架构 7. 案例-基于MVC和三层架构实现商品表的增删改查 1.JSP介绍 概念 JSPJavaServer Pages是一种用于创建动态网页的技术。 它是由Java代码和HTML标记组成的文件允许在HTML页面中嵌入Java代码以实现动态内容的生成和交互。 JSP HTML Java作用简化开发避免在Servlet中直接输出html标签。 JSP原理 JSP本质就是一个Servlet。 JSP 的工作原理可以简化为以下步骤请求 - JSP 编译 - Servlet 生成 - 动态内容生成 - 响应发送。 JSP 编译当首次访问一个 JSP 页面时Web服务器会将其编译为一个 Servlet。这个过程只发生一次生成的 Servlet 会被缓存以提高性能。Servlet 生成在每次请求 JSP 页面时Web服务器会将请求转发给相应的 Servlet。这个 Servlet 是由 JSP 页面生成的它负责处理请求并生成动态内容。生成动态内容在 Servlet 中JSP 页面中的静态内容会被发送到客户端浏览器而嵌入在 % % 和 % % 标记中的 Java 代码会在服务器端执行。这些代码可以用于访问数据库、处理表单数据、执行业务逻辑等。生成的动态内容将与静态内容组合在一起形成完整的响应。发送响应最终生成的响应会被发送给客户端浏览器然后在浏览器中进行渲染和显示。 2 JSP快速入门 步骤 前提条件安装 Java 开发环境JDK和一个支持 JSP 的 Web 服务器如 Apache Tomcat。创建一个新的web项目并在项目中创建一个JSP文件文件保存到 Web 项目的合适位置例如 webapp 目录下。在jsp文件中导入JSP标签使用 % % 标记来嵌入 Java 代码或使用 % % 标记来输出 Java 表达式的结果到页面上。启动 Web 服务器例如 Apache Tomcat。使用 Web 浏览器访问 JSP 页面。在浏览器中输入 JSP 页面的 URL例如 http://localhost:8080/your-web-app/your-jsp-file.jsp。扩展 JSP 页面添加更多的 HTML 标记、Java 代码和表达式以实现更复杂的动态内容和交互逻辑。 导入jsp依赖块 //scope: 指定依赖项的范围。在这种情况下provided 表示该库将由部署的服务器提供而不是由项目自身打包。 //它表示该依赖项在编译和测试阶段可用但在运行时由部署的环境例如应用服务器提供。 dependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.2/versionscopeprovided/scope/dependency%--Created by IntelliJ IDEA.User: 11445Date: 2023/8/17Time: 18:59To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
h1 hello jsp 快速入门/h1%System.out.println(此处是java代码);
%
/body
/html
启动服务器并在浏览器访问该jsp文件 原理解释: 浏览器第一次访问 hello.jsp 页面tomcat 会将 hello.jsp 转换为名为 hello_jsp.java 的一个 Servlettomcat 再将转换的 servlet 编译成字节码文件 hello_jsp.classtomcat 会执行该字节码文件向外提供服务 3 JSP 脚本
概念 在 JSP 页面中JSP脚本用于在 JSP页面内定义 Java代码。可以使用脚本元素 % % 来嵌入 Java 代码。 JSP 脚本有如下三个分类 %…%内容会直接放到_jspService()方法之中%…%内容会放到out.print()中作为out.print()的参数%!…%内容会放到_jspService()方法之外被类直接包含 1 % … %脚本声明 这种形式的脚本元素中的代码会被插入到生成的 Servlet 的 _jspService() 方法中。它用于在方法内部执行一段逻辑代码如条件判断、循环等。 2. % … %脚本表达式 这种形式的脚本元素用于将表达式的结果输出到页面上。 它会被转换为 out.print(…) 形式并放置在生成的 Servlet 的 _jspService() 方法中。 3.%! … %脚本片段 这种形式的脚本元素中的代码会被插入到生成的 Servlet 类中而不是方法内部。它可以用于定义类成员变量、方法和构造函数以供整个 Servlet 的生命周期使用。 %!void show(){}String name zhangsan;
% 3.1 JSP脚本案例 AIM模拟从数据库中导入品牌表 % page importcom.itheima.pojo.Brand % // 导入 Brand 类
% page importjava.util.List % // 导入 List 类
% page importjava.util.ArrayList % // 导入 ArrayList 类
% page contentTypetext/html;charsetUTF-8 languagejava % // 设置页面的字符集为 UTF-8%ListBrand brands new ArrayListBrand(); // 创建 Brand 类型的 List 集合 brandsbrands.add(new Brand(1,三只松鼠,三只松鼠,100,三只松鼠好吃不上火,1)); // 往 brands 中添加 Brand 对象brands.add(new Brand(2,优衣库,优衣库,200,优衣库服适人生,0)); // 往 brands 中添加 Brand 对象brands.add(new Brand(3,小米,小米科技有限公司,1000,为发烧而生,1)); // 往 brands 中添加 Brand 对象
%!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
input typebutton value新增br
hr
table border1 cellspacing0 width800trth序号/thth品牌名称/thth企业名称/thth排序/thth品牌介绍/thth状态/thth操作/th/tr%for (int i0;ibrands.size();i){Brand brand brands.get(i); // 获取 brands 集合中的 Brand 对象%tr aligncentertd% brand.getId()%/td // 输出 Brand 对象的 id 属性td% brand.getBrandName()%/td // 输出 Brand 对象的 brandName 属性td% brand.getCompanyName()%/td // 输出 Brand 对象的 companyName 属性td% brand.getOrdered()%/td // 输出 Brand 对象的 ordered 属性td% brand.getDescription()%/td // 输出 Brand 对象的 description 属性td% brand.getStatus()%/td // 输出 Brand 对象的 status 属性tda href#修改/a a href#删除/a/td/tr%}%/table/body
/html3.2 JSP缺点 由于 JSP页面内既可以定义 HTML 标签又可以定义 Java代码造成了以下问题 书写麻烦特别是复杂的页面 既要写 HTML 标签还要写 Java 代码阅读麻烦 上面案例的代码相信你后期再看这段代码时还需要花费很长的时间去梳理复杂度高运行需要依赖于各种环境JREJSP容器JavaEE…占内存和磁盘JSP会自动生成.java和.class文件占磁盘运行的是.class文件占内存调试困难出错后需要找到自动生成的.java文件进行调试不利于团队协作前端人员不会 Java后端人员不精 HTML 如果页面布局发生变化前端工程师对静态页面进行修改然后再交给后端工程师由后端工程师再将该页面改为 JSP页面。 4 EL表达式
概述 EL全称Expression Language 表达式语言 用于简化 JSP 页面内的 Java 代码替换获取数据的代码。 用于在JSPJavaServer Pages页面中嵌入和处理表达式的语言。EL表达式提供了一种简化和简化JSP页面中的表达式和数据访问的方式。 EL表达式的语法类似于脚本语言可以在JSP页面中通过${…}语法来引用和操作变量、属性和方法。 - EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据然后将数据展示在页面上。
- 而 EL 表达式的语法也比较简单${expression} 。例如${brands} 就是获取域中存储的 key 为 brands 的数据JAVAWeb四大域对象 el 表达式获取数据会依次从这4个域中寻找直到找到为止。 page当前页面有效request当前请求有效session当前会话有效application当前应用有效 4.1 快速入门案例 案例说明 定义servlet在 servlet 中封装一些数据并存储到 request 域对象中并转发到 el-demo.jsp 页面 //定义Servlet用于封装数据并把数据存储到域中并转发到jsp页面中WebServlet(/demo1)
public class ServletDemo1 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 准备数据ListBrand brands new ArrayListBrand();brands.add(new Brand(1,三只松鼠,三只松鼠,100,三只松鼠好吃不上火,1));brands.add(new Brand(2,优衣库,优衣库,200,优衣库服适人生,0));brands.add(new Brand(3,小米,小米科技有限公司,1000,为发烧而生,1));//2.存储到request狱中req.setAttribute(brands,brands);//3.转发到el-demo.jsp中req.getRequestDispatcher(/el-demo.jsp).forward(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core%
% page isELIgnoredfalse %
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
body
${brands}
/body
/html 5. JSTL标签 JSTLJavaServer Pages Standard Tag LibraryJSP标准标签库) 是一个JSP标签集合它封装了JSP应用的通用核心功能。aim使用标签替换并取代JSP页面上的java代码 1. 导入坐标
dependencygroupIdjstl/groupIdartifactIdjstl/artifactIdversion1.2/version/dependencydependencygroupIdtaglibs/groupIdartifactIdstandard/artifactIdversion1.1.2/version/dependency2. 在JSP页面上引入JSTL标签库
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core % 3. 使用标签 if 标签 c:if相当于 if 判断 属性test用于定义条件表达式 c:if test${flag 1}男
/c:if
c:if test${flag 2}女
/c:if代码演示 定义一个 servlet 在该 servlet 中向 request 域对象中添加 键是 status 值为 1 的数据 WebServlet(/demo2)
public class ServletDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 存储数据到request域中request.setAttribute(status,1);//2. 转发到 jstl-if.jsp数据request.getRequestDispatcher(/jstl-if.jsp).forward(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}定义 jstl-if.jsp 页面在该页面使用 c:if 标签 % page contentTypetext/html;charsetUTF-8 languagejava %
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core %
html
headtitleTitle/title
/head
body%--c:if来完成逻辑判断替换java if else--%c:if test${status 1}启用/c:ifc:if test${status 0}禁用/c:if
/body
/html6. MVC模式和三层架构
关于MVC和三层架构的理解:https://blog.csdn.net/weixin_43232955
关于三层架构与MVC的区别https://blog.csdn.net/qq_52596258
https://blog.csdn.net/qq_42052589/article/details/106132293
三层架构和MVC的本质区别同三层架构和MVC是两种常见的软件架构设计模式
---------------------------------------------------------------------------------
三层架构是一种将软件系统划分为表示层、业务逻辑层和数据访问层的架构模式。
它的目标是将系统的不同功能模块分离使得各个模块可以独立开发、测试和维护。
- 表示层负责用户界面展示和交互
- 业务逻辑层处理具体的业务逻辑
- 数据访问层负责与数据库或其他数据存储进行交互
这种分层结构有助于提高系统的可扩展性、可维护性和重用性。
---------------------------------------------------------------------------------
MVC是一种将应用程序划分为M模型、V视图和C控制器三个组成部分的架构模式。
- 模型负责处理数据和业务逻辑
- 视图负责用户界面的展示
- 控制器负责处理用户输入和调度模型与视图之间的交互
MVC的主要目标是将应用程序的逻辑与界面分离使得各个组件可以独立开发和测试。这种分离可以提高代码的可维护性、可测试性和重用性。
---------------------------------------------------------------------------------
本质上说三层架构强调的是将系统按照功能模块进行分层更关注整个系统的结构和组织。
MVC强调的是将应用程序按照职责进行分离关注应用程序内部的交互和逻辑。6.1 MVC MVC 是一种分层开发的模式 MVCModel View Controller是软件工程中的一种软件架构模式它把软件系统分为模型、视图和控制器三个基本部分。 //最典型的MVC就是JSPServletJavaBean的模式。 MModel业务模型处理业务 VView视图界面展示 CController控制器处理请求调用模型和视图 控制器Controller 的作用就是将Model 与 View一一对应起来 MVC 好处 职责单一互不影响。每个角色做它自己的事各司其职。 有利于分工协作。 有利于组件重用 6.2 三层架构 三层架构是将我们的项目分成了三个层面分别是 表现层、业务逻辑层、数据访问层。 数据访问层 对数据库的CRUD基本操作业务逻辑层 对业务逻辑进行封装组合数据访问层层中基本功能形成复杂的业务逻辑功能。 例如 注册业务功能 我们会先调用 数据访问层 的 selectByName() 方法判断该用户名是否存在如果不存在再调用 数据访问层 的 insert() 方法进行数据的添加操作表现层 接收请求封装数据调用业务逻辑层响应数据 整个流程 浏览器发送请求表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理业务逻辑层方法调用数据访问层方法进行数据的操作处理完成依次返回到serlvet然后servlet将数据交由JSP 进行展示。 7. 案例-基于MVC和三层架构实现商品表的增删改查