代码编织梦想

  •  request作为域对象 

  • 使用servlet接受前端请求 响应数据,具体是 request 来接受请求的数据

  • response 来相应数据 但是 ,直接使用response 响应数据 是不够美观的 

  • 所以 后面咱们要引出一个 技术 叫做 jsp ,jsp 上面可以写html元素 ,所以 擅长页面展示 

  • 但是 有个问题 如何把后端动态的数据展示在 jsp 上面 

  • 这里 咱们现将第一种 解决方案 就是 域对象 

  • 他解决问题的思想 就是 在后端 把数据放在域对象中,在 jsp 页面上 从域对象中再取出来 *

  • javaweb 中 有四个域对象

    • pageContext
    • request
    • session
    • servletContext/application

一、四个域对象

域对象作用范围
pageContext该作用域中的属性只在当前 JSP 页面有效,跳转页面后失效。
request该作用域中的属性只在当前请求范围内有效,转发时可以共享request对象中数据,重定向后失效
session该作用域中的属性只在当前会话范围内有效。当session过期;或者没有设置JSESSIONID的有效期,而关闭网页,都会引起失效。
application该作用域中的属性在整个应用范围内有效,服务器重启后失效。

@WebServlet("/request5")
public class Request5Demo extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");

        resp.setContentType("text/html;charset=utf-8");


        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String gender = req.getParameter("gender");
        String age = req.getParameter("age");

        String[] hobbies = req.getParameterValues("hobby");

        String sheng = req.getParameter("sheng");

        //封装到对象中

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setGender(gender);
        user.setAge(Integer.parseInt(age));

        user.setHobbies(hobbies);
        user.setSheng(sheng);

        //req 对象 作为 域对象来使用
        //req.setAttribute("user",user);

        //思考:为什么 重定向没有把数据带到这个页面
        //resp.sendRedirect("/main.jsp");
        // 转发 为什么 可以把数据带过去
        //req.getRequestDispatcher("/main.jsp").forward(req,resp);

        //由于 转发是一次请求 所以 request 在转发的时候 是生效的


        // 重定向是两次请求 你在 servlet 中放数据的request 和 在jsp 中取数据的request 不是同一个
        // 所以 重定向时 无法使用request 携带数据

        //那么 可以使用作用域更大的域对象

        HttpSession session = req.getSession();

        session.setAttribute("user",user);
        //重定向
        resp.sendRedirect(req.getServletContext().getContextPath()+"/main.jsp");
        //转发
       // req.getRequestDispatcher("/main.jsp").forward(req,resp);

    }
}

二、jstl标签

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。主要包括:

核心标签(c:)

JSTL函数(fn:)

格式化标签(fmt:)

数据库标签

XML标签

2.1核心标签库

标签说明
c:out将表达式的结果输出到页面中,类似于 <%= ...%>
c:set在指定范围内设置变量或属性值
c:if类似于 Java if 语句,用于条件判断
c:choose类似于 Java switch 关键字,为 c:when和c:otherwise 的父标签
c:whenc:choose 的子标签,用来判断条件是否成立
c:otherwisec:choose 的子标签,当所有的 c:when 标签判断为 false 时被执行
c:forEach类似于 Java for,用于迭代集合中的信息

2.2 使用步骤

1):有两种方案:

①:导入jstl-1.2.jar文件

②:写maven依赖(方便一些,个人推荐)

 <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

2)通过tablib指令在jsp中导入相关的标签库

<%@ page contentType="text/html;charset=UTF-8" language="java" %>​<!-- 引入核心标签库,前缀必须使用"c" --><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

3)核心标签库语法

<body>

<!-- 设置值
	var 变量名
	value 对应的值
 -->
<c:set var="name" value="haha" ></c:set>

${name }

<!-- 输出值 
 default 表示默认值 -->
<c:out value="${name1 }" default="aa"></c:out>


<c:set var="sex" value="女"></c:set>

<!-- 单条件判断 
类似java中 if(){}
test 判断条件,可以通过el表达式设置,在{}里面写判断逻辑
-->
<c:if test="${sex == '男' }">
	<input type="radio" value="男" checked="checked" />男
	<input type="radio" value="女"  />女
</c:if>
<c:if test="${sex == '女' }">
	<input type="radio" value="男"  />男
	<input type="radio" value="女" checked="checked" />女
</c:if>

<c:set value="50" var="score"></c:set>
<!-- 多条件判断 -->

<c:choose>
	<c:when test="${score > 80 && score <= 100 }">
		学霸
	</c:when>
	<c:when test="${score >= 60 && score <= 80 }">
		中规中矩
	</c:when>
	<c:when test="${score > 0 && score < 60 }">
		渣渣
	</c:when>
	<c:otherwise>
		分数错误
	</c:otherwise>
</c:choose>

<% 
	List<User> list = new ArrayList<User>();
	for(int i = 0; i < 3; i++){
		User d = new User();
		d.setName("wangwu" + i);
		d.setAge(20);
		list.add(d);
	}
	request.setAttribute("userList", list);
%>
<!-- 循环遍历
	items 要遍历的集合
	var 遍历的元素的变量名
	varStatus 变量的状态
		count 序号 1, 2, 3, 4.。。
		index 索引、下标
		first 是否第一个元素
		last 是否最后一个元素
		
 -->
 
<table border="1" width="200">
	<tr>
		<td>name</td>
		<td>age</td>
		<td></td>
	</tr>
	
    <!--  var是循环时的存储数据的变量名,用它来得到想要的信息 -->
	<c:forEach items="${userList }" var="user" varStatus="vs">
		<tr>
			<td>${user.name }</td>
			<td>${user.age }</td>
			<td>${vs.count }/${vs.index }/${vs.first }/${vs.last }</td>
		</tr>
	</c:forEach>

</table>


</body>

jsp中怎么实现动态路径?

${pageContext.request.contextPath}

eg:

<a href="${pageContext.request.contextPath}/DogServlet">点击获得狗信息</a>

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/axbhealj/article/details/129826014

浅谈jsp中jstl【标签库】常用标签,el表达式在jsp四大域中取值:_打豆豆。的博客-爱代码爱编程

声明:本测试使用的Tomcat9,JDK9 创建web4.0项目进行测试:   EL表达式中字符串【能转为数字的】会自动强转: EL表达式的全称: Expression Language  ;作用:EL表达式是从 session 中取值,【取代了JSP的脚本表达式】,格式: ${EL表达式内容}  ;JSP的四大域:page ,request

java中的jsp以及el表达式、jstl标签_love_codes的博客-爱代码爱编程

一、jsp的起源    HTML页面时静态页面,而网页内容一般都是动态的,内容不是一成不变的,如果使用servlet程序来输出页面会造成整个servlet程序代码的臃肿,编写和维护都非常麻烦。    为了弥补servlet的缺陷,Sun公司在Servlet的基础上,推出JSP(Java Servlet Pages)技术,JSP是简化Servlet编写的

jsp技术 el标签 jstl标签 mvc设计思想_xc965746550的博客-爱代码爱编程

JSP技术 EL标签 JSTL标签 MVC设计思想 jsp 概述 jsp:Java Server Pages --java服务器端的页面技术 html代码+java代码+jsp代码的组合 后缀名:.jsp 存放位置:

深入理解JSP、EL表达式和JSTL标签-爱代码爱编程

JSP、EL表达式、JSTL标签 第一节 JSP Servlet3.1 JSP 2.3 jsp:模板引擎,在当今springboot开发中,对jsp支持不是特别好,所以对于大家要求jsp会用即可 MVC设计思想==》all in one 1.1 JSP是什么 全称: Java Server Pages,java服务器页面。和Servle

JSP动态网页编程技术、JSTL标签库-爱代码爱编程

一、JSP基础语法 1.理解 ​ JSP:Java Server Page SUN 公司提供的动态网页编程技术,是 Java Web 服务器端的动态资源。 Jsp 就是一个 Servlet,当我们第一次访问 Jsp 的时候,Jsp 引擎都会将这个Jsp 翻译 成一个 Servlet,这个文件存放在 Tomcat 中的 work 目录中。

JSP、EL表达式以及JSTL标签库学习-爱代码爱编程

文章目录 一、JSP二、cookie(一)简介(二)详解三、HttpSession(一)概述(二)简介(三)原理四、EL表达式(一)简介(二)四个域中的顺序问题(三)JavaBean中的属性(person.jsp)(四)运算(五)11个隐含对象五、JSTL标签库(一)简介(二)core核心库的使用 一、JSP 作用:可以在原有html基础上

jsp指令,九大隐式对象,四大域对象;EL表达式,JSTL标签库-爱代码爱编程

1、jsp的执行原理 问题一:JSP中的java代码是如何运行的? 会被服务器直接放到service方法中运行 问题二:out是什么? 是一个字符输出流,功能和Servlet中PrintWriter一致,该out是service方法中定义好的变量名 问题 3 :除了 out ,还有什么东西可以直接用? 只要是 service

JSP技术和JSTL标签库-爱代码爱编程

JSP技术 一: JSP指令 jsp指令是指导jsp翻译和运行的命令,jsp包括三大指令:page指令 -----属性最多的指令(实际开发中page指令默认)属性最多的一个指令,根据不同的属性,指导整个页面特性 格式; <%@ page 属性名1= "属性值1”属性名2= “属性值2” …%>常用属性如下:language: jsp脚本中

JSP、EL表达式、JSTL标签库-爱代码爱编程

一、jsp介绍 jsp的全称是javaserverpages。Java的服务器页面。 jsp的主要作用是代替Servlet程序回传html页面的数据 因为Servlet程序回传html页面数据是一件非常繁锁的事情。开发成本和维护成本都极高 jsp页面和html页面一样,都是存放在web目录下。访问也跟访问html页面一样。 jsp的本质 jsp页面本

jsp el标签 jstl标签-爱代码爱编程

jsp 概述 1) 什么是jsp? jsp:Java Server Pages ---java服务器端的页面 组成:html代码+jsp代码+java代码 后缀名:.jsp 存放位置和html一致 总结:能写java代码的html页面 用来展示服务端的数据 2) 为什么使用jsp? 使用servlet用来做页面的复杂数据展示特别的麻烦

JavaWeb:理解JSP以及原理,能在JSP中使用 EL表达式和JSTL标签-爱代码爱编程

↑↑Java语法基础 —> 小型项目练习 —> MySQL 更多学习内容均更新在专栏了,记得关注专栏哦 ↑↑ 🍬JDBC:从CRUD开始,理解JDBC中的各个对象作用,掌握Druid的使用 🍬Maven从安装到手把手教学进行项目管理 🍬MyBatis完成代理方式查询数据以及核心文件配置、 🍬Mybatis:使用映射配置文件实现

Servlet内置对象、JSP和JSTL-爱代码爱编程

1. Servlet内置对象 Cookie对象 Cookie是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,但是由于Cookie是服务器端保存在客户端的信息, 所以其安全性也是很差的。 Cookie的格式:键值对用“

10.26 监听器,jsp,el 表达式,jstl标签,javaweb四大域对象_m0_47432188的博客-爱代码爱编程

目录 1.监听器Listener 2.监听器分类 3.JSP 3.1 引入jsp依赖 3.2 jsp原理 3.3 jsp脚本分类 4.EL 表达式 5.JSTL标签 6.域对象 1.监听器Listener 概述:监听器可以监听就是在 application , session , request 三个对象创建、销毁或者往其中

jstl应用-爱代码爱编程

目录 JSTL使用 JSTL优点 常用标签 JSP Standard Tag Library JSP标准标签库 ,JSP为开发者提供的一系列标签,使用这些标签可以完成一些逻辑处理,比如循环遍历集合,让代码更加简洁,不会出出现JSP脚本穿插的情况。         实际开发中EL 和JSTL结合起来使用,JSTL侧重逻辑处理,EL负责展示数据

web核心 6-爱代码爱编程

内容介绍 1.jsp 2.el标签 3.jstl标签 4.mvc设计思想 jsp 概述 jsp:Java Server Pages --java服务器端的页面技术 html代码+java代码+jsp代码的组合

sprient性能压测-爱代码爱编程

实现流程 pppoe流程: 数据库插入基础信息business_broadband,dhcp_pool,user,vni_business,vni_forward重启网元读取数据库配置接入网元建立vxlan隧道建立用户侧