JSP基础总结+例题

2 篇文章 0 订阅

1. 什么是JSP(Java Server Pages)

1.1概述

🐲简化的Servlet设计,在HTML标签中嵌套Java代码,用以更新开发Web应用的动态网页
🦄JSP文件在容器中会转换成Servlet执行
🍕JSP是对Servlet的一种高级封装。本质还是Servlet
🐷与Servlet相比,JSP可以很方便的编写或者修改HTML网页而不用去面对大量的prinlln语句
👾Tomcat会将xxx.jsp文件转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端

1.2 作用

替换显示页面部分的Servlet(使用*.jsp文件文件替换XxxJSP.java)

2. 创建并访问JSP

web同级目录下右键 --> new --> JSP/JSPX --> 输入文件名 --> 选择JSP file创建
在这里插入图片描述

在这里插入图片描述
1. 运行Tomcat,在浏览器上添加上.jsp文件的名称如first.jsp
在这里插入图片描述

3. 普通脚本、声明脚本、输出脚本、注释

3.1 普通脚本

<%    %>

在这里插入图片描述
浏览器输出结果为
在这里插入图片描述

3.2 声明脚本

<%!     %>

在这里插入图片描述

3.3输出脚本

<%=Java表达式%>

例题
在这里插入图片描述

3.4注释

<%-- 这里是JSP注释,内容不会被发送至浏览器甚至不会被编译    --%>
<!-- 这里是Html注释,通过浏览器查看网页源代码时可以看见注释内容     -->

3. JSP头部的page指令

(1) contentType属性:表示JSP返回的数据类型是什么,即response.setContentType()的参数值
(2) language属性:表示JSP翻译之后是什么语言文件(目前只支持Java)
(3) pageEncoding属性:表示当前JSP文件本身的字符集(可在IDEA右下角看到)
(4) import属性:表示导包(导类),与Java一致
(5) autoFlush属性:设置当out输出流缓冲区满了之后是否自动刷新缓冲区,默认值是true
(6) buffer属性:设置out缓冲区的大小,默认是8kb
注意:out缓冲区满了之后不能自动刷新的话会报错
(7) errorPage属性:设置当JSP页面运行出错时自动跳转到的页面(错误信息页面)的路径,这个 路径一般都是以斜杠打头,表示请求的地址是http://ip:port/工程路径/,对应代码web目录
(8) isErrorPage属性:设置当前JSP页面是否是错误信息页面,默认是false,如果是true可以 获取错误信息
在这里插入图片描述

(9) session属性:设置访问当前JSP页面时是否会创建HttpSession对象,默认值是true
(10) extends属性:设置JSP页面翻译出来的Java类默认继承谁
————————————————
版权声明:本文为CSDN博主「BlogGao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_49343190/article/details/107932765

4. include静态包含(可能会有重名冲突的问题,不建议使用)

语法:

<%@inclued…%>

4.1 例题

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Header页面</title>
</head>
<body>
<h1>header页面</h1>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>footer页面</title>
</head>
<body>
<h1>footer页面</h1>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@include file="header.jsp"%>
<html>
<head>
    <title>Main页面</title>
</head>
<body>
<h1>main页面</h1>
</body>
</html>
<%@include file="footer.jsp"%>

访问main.jsp显示结果
在这里插入图片描述
静态包含只是把header.jsp和footer.jsp两个页面的输出代码复制到了当前JSP文件的.class中
相当于是复制到了同一文件下

4.2静态包含的重名冲突

当在header.jsp或者footer.jsp下面用普通脚本定义一个String message="helloworld";变量

在同时引用了header.jsp和footer.jsp的main.jsp文件里就不能再次使用message这个变量名
会报错
在这里插入图片描述

5. taglib指令

在学习JSTL时再了解就行

6. 动作标签

语法

<jsp: action_name attribute=“value”/>

6.1 动作标签之include动态包含

属性:page -->包含在页面中的相对URL地址
语法

<jsp:include page=“index.jsp”/>
这里的jsp:include动作与静态包含时不同,是将外部文件的输出结果引入到了当前JSP文件中

6.1.1 例题

在这里插入图片描述

6.1.2 运行结果

在这里插入图片描述

6.2 动作标签useBean、setProperty、getProperty

属性:id 、 class

6.2.1语法:

<jsp:useBean id=“name” class=“package.className”/>
jsp:useBean动作用来加载一个将在JSP页面中使用的JavaBean
<jsp:setProperty name=“” property=“” value=“” />
<jsp:getProperty name=“” property=“” />

6.2.2 例题
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>useBean</title>
</head>
<body>
<%--id=对象的名字 class=全限定名--%>
<jsp:useBean id="user" class="com.qf.project.entity.Admin"/>
<jsp:setProperty name="user" property="username" value="tom"/>
<jsp:setProperty name="user" property="password" value="123456"/>
<jsp:setProperty name="user" property="phone" value="17654815467"/>
<jsp:setProperty name="user" property="address" value="中原工学院"/>
<jsp:getProperty name="user" property="username"/>
<jsp:getProperty name="user" property="password"/>
<jsp:getProperty name="user" property="phone"/>
<jsp:getProperty name="user" property="address"/>
</body>
</html>

运行结果:
在这里插入图片描述

7.1 动作标签之forward、param

语法

<jsp:forward page=" "/>
jsp:forward动作把请求转到另外的页面

7.1.1 forward例题

当在浏览器访问A页面时跳转到B页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>A页面</title>
</head>
<body>
<jsp:forward page="B.jsp"></jsp:forward>
</body>
</html>

7.1.2 param例题:把A.jsp页面跳转到B.jsp页面时传递一个参数给B让它输出

语法

<jsp:param name=“” value=“” />
在转发动作内部使用,做参数传递

A页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>A页面</title>
</head>
<body>
<jsp:forward page="B.jsp">
    <jsp:param name="name" value="libai"/>
</jsp:forward>
</body>
</html>

B页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>B页面</title>
</head>
<body>
<h1>B页面</h1>
<%
    String message =request.getParameter("name");
%>Re
<%=message%>
</body>
</html>

8. 内置对象

由JSP自动创建的对象,可以直接使用

对象名类型说明
requestjavax.servlet.http.HttpServletRequst
responsejavax.servlet.http.HttpServletResponse
sessionjavax.servlet.http.HttpSession由session="true"开关
applicationjavax.servlet.ServletContext
configjavax.servlet.ServletConfig
exceptionjava.lang.Throwable由isErrorPage="fage"开关
outjavax.servlet.jsp.JspWriter
pageContextjavax.servlet.jsp.PageContext
pagejava.lang.Object当前对象this当前servlet实例

9. 四大域对象

JSP有四大域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别
pageContext(javax.servlet.jsp.PageContext)当前JSP页面范围
request(javax.servlet.http.HttpServletReques)一次请求有效(在浏览器未关闭下重新访问再次请求则得到null)
session (javax.servlet.http.HttpSession)一次会话有效(关闭浏览器失效)
application (javax.servlet.ServletContext)整个Web应用有效(服务器重启或关闭失效)

9.1 例题

9.1.1 四大域对象之pageContext

pageContext因为是在当前JSP页面有效,一旦跳转则失效

通过setAttribute(“name”,value);存储值
通过getAttribute(“name”);获取值
用于获取其他8个内置对象或者操作其他对象的作用域
所以在Xxx.jsp页面写

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<%
    pageContext.setAttribute("pageContextScope","are you pig?");
    String Areyoupig= (String)pageContext.getAttribute("pageContextScope");
%>
<h1>pageContextScope值为:<%=Areyoupig%></h1>
</body>
</html>

输出结果为

在这里插入图片描述

9.1.2 四大域对象之request

一次请求有效(在浏览器未关闭下重新访问再次请求则得到null)request要通过getRequestDispatcher()传值
在Servlet页面编写
ScodeServlet页面

@WebServlet(name = "ScodeServlet", value = "/scope")
public class ScodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	//HttpServletReques
        request.setAttribute("requestScope","bbb");
        //request要通过getRequestDispatcher()传值
        request.getRequestDispatcher("/innerObj.jsp").forward(request, response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<%
    pageContext.setAttribute("pageContextScope","are you pig?");
    String Areyoupig= (String)pageContext.getAttribute("pageContextScope");
    String bbb = (String)request.getAttribute("requestScope");
%>
<h1>pageContextScope值为:<%=Areyoupig%></h1>
<h1>requestScope值为:<%=bbb%></h1>
</body>
</html>

注意在浏览器要访问的Servlet页面scope,不能直接访问innerObj.jsp运行结果如下
在这里插入图片描述

9.1.3 四大域对象之session、application

利用sendRedirect()重定向传值
例题

@WebServlet(name = "ScodeServlet", value = "/scope")
public class ScodeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("requestScope", "bbb");
//        request.getRequestDispatcher("/innerObj.jsp").forward(request, response);
        request.getSession().setAttribute("sessionScope", "ddd");
        request.getServletContext().setAttribute("sevletContextScope", "ccc");
        //利用sendRedirect()重定向,所以必须使用session
        response.sendRedirect(request.getContextPath() + "/innerObj.jsp");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<%
    pageContext.setAttribute("pageContextScope","are you pig?");
    String Areyoupig= (String)pageContext.getAttribute("pageContextScope");
    String bbb = (String)request.getAttribute("requestScope");
    String ccc = (String)session.getAttribute("sessionScope");
    String ddd = (String)application.getAttribute("sevletContextScope");

%>
<h1>pageContextScope值为:<%=Areyoupig%></h1>
<h1>requestScope值为:<%=bbb%></h1>
<h1>sessionScope值为:<%=ccc%></h1>
<h1>application值为:<%=ddd%></h1>
</body>
</html>

运行结果在这里插入图片描述

10. pageContext作用域对象

1. 调用8大内置对象 2.操作作用域对象request\session\application

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>pageContext页面</title>
</head>
<body>
<%
<%--调用8大内置对象--%>
    pageContext.getRequest();
    pageContext.getResponse();
    pageContext.getException();
    pageContext.getPage();
    pageContext.getServletConfig();
    pageContext.getSession();
    pageContext.getServletContext();
    pageContext.getOut();
%>
<%
    pageContext.setAttribute("page", "1234");
    pageContext.setAttribute("req", "aaa", PageContext.REQUEST_SCOPE);
    pageContext.setAttribute("sess","bbb",PageContext.SESSION_SCOPE);
    pageContext.setAttribute("app","ccc",PageContext.APPLICATION_SCOPE);
    String req = (String)request.getAttribute("req");
    String sess = (String)session.getAttribute("sess");
    String app = (String)application.getAttribute("app");

%>
<h1>request:<%=req%></h1>
<h1>session:<%=sess%></h1>
<h1>app:<%=app%></h1>
</body>
</html>

在这里插入图片描述
运行结果
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: jsp+servlet+mysql项目是一种基于Java技术的Web开发项目,其中JSP(JavaServer Pages)是一种动态网页开发技术,Servlet是一种Java程序,用于处理Web请求和响应,而MySQL则是一种关系型数据库管理系统,用于存储和管理数据。 在这种项目中,通常会使用JSP页面作为用户界面,Servlet作为控制器,负责处理用户请求和响应,而MySQL则用于存储和管理数据。这种项目可以用于开发各种类型的Web应用程序,例如电子商务网站、社交网络、在线论坛等。 开发这种项目需要掌握Java编程语言、JSPServlet技术、MySQL数据库管理系统等知识。同时,还需要了解Web开发的基本概念和技术,例如HTTP协议、HTML、CSS、JavaScript等。 总之,jsp+servlet+mysql项目是一种基于Java技术的Web开发项目,可以用于开发各种类型的Web应用程序。 ### 回答2: JSPServletMySQL是Web应用程序开发中非常常见的技术组合。JSPServlet是Java EE平台的一部分,它们允许我们创建动态Web页面和处理Web请求。而MySQL是一种常用的关系型数据库,用于存储和管理应用程序中的数据。 使用JSPServlet可以快速地创建一个Web应用程序,JSP在其中扮演着展示数据的角色,Servlet则用于处理请求和响应。在JSP中,我们可以使用Java代码和JSP标签来处理数据,最终呈现给用户的是一个HTML页面。而Servlet则是一个Java类,它可以接收来自客户端的HTTP请求,并对其进行处理。 在一个基于JSPServlet的Web应用程序中,我们需要使用数据库来存储数据。MySQL是一种开源的关系型数据库,它与JSPServlet可以很好地配合使用。我们可以使用Java的JDBC API来连接和操作MySQL,从而让我们的应用程序可以与数据库进行交互。 当我们开发一个基于JSPServletMySQL的项目时,我们首先需要确定项目的需求和目标,然后设计出数据库表结构和应用程序的结构,编写各个模块的代码,并对其进行测试。在整个开发过程中,我们需要注意安全性、可维护性和可扩展性等方面的问题,以确保最终的应用程序能够满足用户的需求并具有良好的用户体验和可维护性。 总之,JSPServletMySQL是三种常用的Web应用程序开发技术,它们能够帮助我们快速地创建动态的Web应用程序,并存储和管理应用程序中的数据。在实际项目中,我们需要结合具体的需求和目标,合理地选择和使用这些技术,以达到最佳的开发效果和用户体验。 ### 回答3: JSP (JavaServer Pages) 是一种视图技术,能够在Java EE 应用程序中创建动态Web页面。Servlets 是Java编写的Server-Side组件,能够处理客户端请求,并生成响应。MySQL是一种开源关系型数据库,可以用SQL语言进行数据管理。 JSPServletMySQL在Java Web项目开发中常常一起使用。通常情况下,JSP负责展示页面,Servlet负责逻辑处理和控制,MySQL负责存储和管理数据。JSPServlet都可以嵌入Java代码,实现动态的Web应用。此外,Servlet还可以调用JavaBean实现更复杂的数据操作。 对于一个基于JSPServletMySQL的Web项目,我们需要设计不同层次的架构。通常采用MVC (Model View Controller) 架构,即将应用程序分为模型、视图和控制器三个部分,实现逻辑与UI的分离。模型负责数据存储和管理,视图负责UI展示,控制器负责中间逻辑的控制。 对于MVC架构,我们可以使用框架和技术工具,如Struts、Spring和Hibernate等来实现。其中Struts是基于MVC架构的Web应用程序框架,Spring是一个全栈的开源应用程序框架,Hibernate是一个Java持久化框架,可以减少Java应用程序的数据存储和访问方面的重复性代码。 总的来说,JSPServletMySQL的使用可以大大提高Web应用开发的效率和可维护性。在实践中,我们需要仔细地设计应用程序,选择好的框架和技术工具,以实现高效、稳定的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

素心如月桠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值