Servelt基础入门,Jsp的基础语法,Jsp 九大内置对象和四个作用域,JavaBean,Sevlet,el表达式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Web 即网页的意思,分为动态Web资源和静态Web资源,静态的Web资源,访问的 Web 始终不变;动态的Web资源不同时间或者不同的请求访问的Web内容不同。
静态技术:html
动态技术:Jsp、Servlet、Asp、PHP,我们主要进行 JavaWeb 开发。


一、jsp,Java Servlet

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
性能明显更好。
Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
Servlet 是独立于平台的,因为它们是用 Java 编写的。
服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
在这里插入图片描述

二、Jsp的基本语法

Jsp的注释

<!-- --> Html 注释
<!-- -->Jsp 注释
// java 单行注释
/* */ java 多行注释


scriptlet 标签

通过 scriptlet 标签我们可以在 Jsp 里嵌入 Java 代码;
第一种:<%! %> 我们可以在里面定义全局变量、方法、类;
第二种:<% %> 我们可以在里面定义局部变量、编写语句;
第三种:<%=%> 我们可以在里面输出一个变量或一个具体内容;


指令介绍

Language : 用来定义要使用的脚本语言;
contentType:定义JSP字符的编码和页面响应的MIME类型;
pageEncoding:Jsp页面的字符编码,默认是 ISO-8859-1;一般改成utf-8
<%@ include file=”url”> 静态包含 先包含,后编译处理;
<jsp:include page=”url”> 动态包含 先编译处理,后包含; 以后开发用动态
包含;


跳转指令介绍

第一种:include 动作指令,<jsp:include page=”/user/test” flush=”true”/>
include动作指令和include的区别:

区别				include						jsp:include
执行时间 		翻译阶段 					在请求处理阶段执行
引入的内容 		引入静态文本,		引入执行页面或 servlet 所生成的应答文本. 
				先包含,后编译 		被包含的文件先编译,后包含进来,然后显示
传参				不支持传参			支持传参

第二种:forward
< jsp:forward>
<jsp:param value=”” name=””>
</jsp:forward>

自定义下面文件
forward.jsp文件

<body>
<jsp:forward page="target.jsp">
	<jsp:param value="tao" name="userName"/>
	<jsp:param value="123456" name="password"/>
</jsp:forward>
</body>

target.jsp文件

</head>
<body>
服务器内部跳转页面<br/>
userName:<%=request.getParameter("userName") %><br/>
password:<%=request.getParameter("password") %>
</body>
</html>

结果如下:

在这里插入图片描述

跳转原理:

在这里插入图片描述


三、Jsp 九大内置对象和四个作用域

在Jsp开发中,Jsp提供了9个内置对象,这些内置对象将由容器为用户进行实例化,用户直接使用即可。这个 9 个内置对象分别是:
pageContext,request,response,session,application,config,out,page,exception;常用的是前面 5 个,需要熟练掌握;
在 Jsp 开发中,可以保存数据,Jsp 提供了四种数据保存范围;分别是 page,request,session,application;


Jsp 的四大作用域

Page 范围:只在一个页面中保存数据; javax.servlet.jsp.PageContext(抽象类)

<body>
<%
	//设置两个page范围的数据库,key-value
	pageContext.setAttribute("name", "小明");
	pageContext.setAttribute("age", 23);
%>
<%
	//取值
	String name=(String)pageContext.getAttribute("name");
	int age=(Integer)pageContext.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age %></font>
</body>

在这里插入图片描述


Request 范围:只在一个请求中保存数据;javax.servlet.http.HttpServletRequest(接口)

//requestScope.jsp
<body>
<%
	//设置两个request范围的数据库,key-value
	request.setAttribute("name", "小明");
	request.setAttribute("age", 23);
%>
<jsp:forward page="requestTarget.jsp"></jsp:forward>
</body>


//requestTarget.jsp
<body>
<%
	//取值
	String name=(String)request.getAttribute("name");
	int age=(Integer)request.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age %></font>
</body>

在这里插入图片描述


Session 范围:在一次会话范围中保存数据,仅供单个用户使用;javax.servlet.http.HttpSession(接口) ;即再打开第二个浏览器值是取不到的

//sessionScope.jsp
<body>
<%
	//设置两个session范围的数据库,key-value
	session.setAttribute("name", "小明");
    session.setAttribute("age", 23);
%>//因为保存至服务器端,所以不用跳转
<h1>session设置完毕</h1>
</body>


//sessionTarget.jsp
<body>
<%
	//取值
	String name=(String)session.getAttribute("name");
	int age=(Integer)session.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age %></font>
</body>

Application 范围:在整个服务器上保存数据,所有用户共享;javax.servlet.ServletContext(接口)

//applicationScope.jsp
</head>
<body>
<%
	//设置两个application范围的数据库,key-value
	application.setAttribute("name", "小明");
    application.setAttribute("age", 23);
%>
<h1>application设置完毕</h1>
</body>


//applicationTarget.jsp
<body>
<%
	//取值
	String name=(String)application.getAttribute("name");
	int age=(Integer)application.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年龄:<%=age %></font>
</body>

response 对象

Response 内置对象和 request 内置对象是相对应的,response 内置对象用于响应客户请求,向客户端输出信息; javax.servlet.HttpServletResponse 接口
1,自动刷新应用
2,页面重定向应用客户端跳转
3,操作 cookie 应用,post、get 方法;比较 post 放数据包里(相对安全,不显示参数)、get 放 Url 后面 get 数据量小,不安全;
4,cookie 和 session 的比较 cookie 信息是存客户端的,session 信息是存服务器的;

//自动刷新应用 ,显示时间
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
	//每隔一秒刷新一下页面
	response.setHeader("refresh", "1");
	//获取当前的时间
	Date mydate=new Date();
%>
当前时间:<%=mydate.toLocaleString() %>
</body>
</html>

第二点:重定向

<body>
<%
    //重定向,客户端跳转
	response.sendRedirect("index.html");
%>

</body>

第三点:get post跳转 登录
response03.jsp文件

//response03.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>tao</title>
<script type="text/javascript">
	function resetValue(){
		document.getElementById("userName").value="";
		document.getElementById("pwd").value="";
	}
</script>
<% 
	String userName=null;
	String pwd=null;
	Cookie[] cookies=request.getCookies();
	for(int i=0;cookies!=null&&i<cookies.length;i++){
		if(cookies[i].getName().equals("userNameAndPwd")){
			userName=cookies[i].getValue().split("-")[0];
			pwd=cookies[i].getValue().split("-")[1];
		}
	}
%>
</head>
<body>
<form action="userLogin.jsp" method="post">
 	<table>
 		<tr>
 			<td>用户名:</td>
 			<td><input type="text" id="userName" name="userName" value="<%=userName%>"/></td>
 		</tr>
 		<tr>
 			<td>密码:</td>
 			<td><input type="password" id="pwd" name="pwd" value="<%=pwd%>"/></td>
 		</tr>
 		<tr>
 			<td>记住密码:</td>
 			<td><input type="checkbox" id="remember" name="remember" value="remember-me"/></td>
 		</tr>
 		<tr>
 			<td><input type="submit" value="登录"></td>   //type=submit 是发送表单
 			<td><input type="button" value="重置" onclick="resetValue()"/></td>
 		</tr>
 	</table>
</form>
</body>
</html>

userLogin.jsp文件

<body>
<%
	String userName=request.getParameter("userName");//获取用户名
	String pwd=request.getParameter("pwd");//获取密码
	String remember=request.getParameter("remember");//获取记住密码
	
	if("remember-me".equals(remember)){
		Cookie userNameAndPwd=new Cookie("userNameAndPwd",userName+"-"+pwd);
		userNameAndPwd.setMaxAge(1*60*60*24*7);//设置成一周
		response.addCookie(userNameAndPwd);//保存cookie
		System.out.println("设置cookie成功");
	}
	System.out.println("userName:"+userName);
	System.out.println("pwd:"+pwd);
	System.out.println("remember:"+remember);
	response.sendRedirect("response03.jsp");
%>
</body>

out 对象

Out 内置对象主要用来向客户端输出各种类型的数据,同时还可以管理应用服务器上的输出缓冲区。所以 out 内置对象的方法是向客户端输出数据和管理缓冲区;

<body>
<%
	out.println("tao");
%>
<% 
	int totalbuffer=out.getBufferSize();//获取总缓冲的大小
	int available=out.getRemaining();//获取未使用缓冲区的大小
	int user=totalbuffer-available;//获取使用缓冲区的大小
	out.println("总缓冲区的大小:"+totalbuffer);
	out.println("未使用缓冲区的大小:"+available);
	out.println("使用缓冲区的大小:"+user);
%>
</body>

config 对象

Config 内置对象是 JSP 页面通过 JSP 容器进行初始化时被传递的对象。javax.servlet.ServletConfig 。在 Servlet 初始化的时候,JPS 引擎通过config 向它传递信息。这种信息可以是属性名和属性值匹配的参数,也可以是通过 ServletContext 对象传递的服务器的有关信息;

//WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Servlet03</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
//下面重点
  <servlet>
  	<servlet-name>init</servlet-name>
  	 <jsp-file>/sysInit.jsp</jsp-file>
  	 <init-param>
  	 	<param-name>jdbcName</param-name>
  	 	<param-value>com.mysql.jdbc.Driver</param-value>
  	 </init-param>
  	 <init-param>
  	 	<param-name>dbUrl</param-name>
  	 	<param-value>jdbc:mysql://localhost:3306/db_demo</param-value>
  	 </init-param>
  </servlet>

  <servlet-mapping>
  <servlet-name>init</servlet-name>   //找到对应的<servlet>里面的<servlet-name>init
  <url-pattern>/init</url-pattern>   //找到上一行
  </servlet-mapping>
</web-app>


//sysInit.jsp
<body>
<% 
	String jdbcName=config.getInitParameter("jdbcName");
    String dbUrl=config.getInitParameter("dbUrl");
%>
<h1>驱动名称:<%=jdbcName %></h1>
<h1>连接地址:<%=dbUrl %></h1>
</body>
</html>

在这里插入图片描述


exception 对象

Exception 内置对象用来处理 JSP 文件在执行时发生的所有异常,它是java.lang.Throwable 类的一个对象。

//exception01.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<%@ page errorPage="error.jsp" %>  //出错时跳转
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
	int a=23;
	int b=0;
	out.println(a/b);
%>
</body>
</html>

//error.jsp
<%@ page import ="java.util.*" %>
<body>
	<% 
		if(exception!=null){
			out.println("程序错误的信息:");
			out.println(exception.getMessage());
		}
	%>
</body>
</html>

在这里插入图片描述


pageContext 对象

pageContext内置对象是一个比较特殊的对象。它相当于页面中所有对象功能的集合,即使用它可以访问到本页面中所有对象。pageContext内置对象由Jsp容器创建并初始化,pageContext对象提供了对JSP页面所有对象及控件的访问。

<body>
	<% 
		pageContext.setAttribute("name0", "pageinfo");
		request.setAttribute("name1", "requestinfo");
		session.setAttribute("name2", "sessioninfo");
		application.setAttribute("name3", "applicationinfo");
		
		out.println("使用pageContext<br/>");
		out.println("page中的属性值"+pageContext.getAttribute("name0")+"<br/>");
		out.println("request中的属性值"+pageContext.getRequest().getAttribute("name1")+"<br/>");
		out.println("session中的属性值"+pageContext.getSession().getAttribute("name2")+"<br/>");
		out.println("applicaiton中的属性值"+pageContext.getServletContext().getAttribute("name3")+"<br/>");
	%>
</body>

在这里插入图片描述


四、JavaBean

JavaBean 的概念

1.提高代码的可复用性:对于通用的事务处理逻辑,数据库操作等都可以封装在 JavaBean 中,通过调用 JavaBean 的属性和方法可快速进行程序设计。
2.程序易于开发维护:实现逻辑的封装,使事务处理和显示互不干扰。
3.支持分布式运用:多用 JavaBean,尽量减少 java 代码复用。


jsp:useBean 创建 javabean

<jsp:useBean id=“实例化对象名称” scope=“保存范围” class=“类完整名称”/> Scope,一共有page,request,session 和 application 4 个属性范围,默认是 page;
先创建好学生类

<body>
	<jsp:useBean id="student" scope="page" class="com.tao.model.Student"/>
	<% 
	student.setName("tao");
	student.setAge(23);
	%>
	<h1>姓名:<%=student.getName() %></h1>
	<h1>年龄:<%=student.getAge() %></h1>
</body>

jsp:setProperty 设置 javabean 属性值

<jsp:setProperty property=“属性名称” name=“实例化对象的名称” value=“属性值” param=“参数名称”/> Property=”*” 自动匹配所有

//student.jsp
<body>
<form action="javabean5.jsp" method="post"> 
<table>
	<tr>
		<td>姓名:</td>
		<td><input type="text" name="name(对应3、4jsp)或者userName"></td>
	</tr>
	<tr>
		<td>年龄:</td>
		<td><input type="text" name="age"></td>
	</tr>
	<tr>
		<td clospan="2"><input type="submit" value="提交"/></td>
	</tr>
</table>
</form>
</body>
//javabean3.jsp
<body>
<%
	request.setCharacterEncoding("utf-8");
%>
	<jsp:useBean id="student" scope="page" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="*" name="student" />
	<h1>姓名:<%=student.getName() %></h1>
	<h1>年龄:<%=student.getAge() %></h1>
</body>
//javabean4.jsp
<body>
<%
	request.setCharacterEncoding("utf-8");
%>
	<jsp:useBean id="student" scope="page" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="name" name="student" />
	<jsp:setProperty property="age" name="student" value="24" />
	<h1>姓名:<%=student.getName() %></h1>
	<h1>年龄:<%=student.getAge() %></h1>
</body>
//javabean5.jsp
<body>
<%
	request.setCharacterEncoding("utf-8");
%>
	<jsp:useBean id="student" scope="page" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="name" name="student" param="userName"/>
	<jsp:setProperty property="age" name="student" value="24" />
	<h1>姓名:<%=student.getName() %></h1>
	<h1>年龄:<%=student.getAge() %></h1>
</body>

jsp:getProperty 获取 javabean 属性值

<jsp:getProperty property=“属性名称” name=“实例化对象的名称”/>

<body>
	<jsp:useBean id="student" scope="page" class="com.javaclimb.model.Student"/>
	<% 
	student.setName("tao");
	student.setAge(23);
	%>
	<h1>姓名:<jsp:getProperty property="name" name="student" /></h1>
	<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>

javabean 的保存范围

Javabean 的保存范围有 page,request,session.application,默认是 page;

//javabean7.jsp		request
<body>
	<jsp:useBean id="student" scope="request" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="name" name="student" value="tao" />
	<jsp:setProperty property="age" name="student" value="23" />
	<jsp:forward page="target1.jsp"/>
</body>
//target1.jsp
<body>
	<jsp:useBean id="student" scope="request" class="com.javaclimb.model.Student"/>
	<h1>姓名:<jsp:getProperty property="name" name="student" /></h1>
	<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>

//javabean8.jsp		session
<body>
	<jsp:useBean id="student" scope="session" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="name" name="student" value="tao" />
	<jsp:setProperty property="age" name="student" value="23" />
	<h1>session设置完毕!</h1>
</body>
//target2.jsp
<body>
<h1>session取值!</h1>
	<jsp:useBean id="student" scope="session" class="com.javaclimb.model.Student"/>
	<h1>姓名:<jsp:getProperty property="name" name="student" /></h1>
	<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>

//javabean9.jsp		application
<body>
	<jsp:useBean id="student" scope="application" class="com.javaclimb.model.Student"/>
	<jsp:setProperty property="name" name="student" value="tao" />
	<jsp:setProperty property="age" name="student" value="23" />
	<h1>application设置完毕!</h1>
</body>
//target3.jsp
<body>
<h1>application取值!</h1>
	<jsp:useBean id="student" scope="application" class="com.javaclimb.model.Student"/>
	<h1>姓名:<jsp:getProperty property="name" name="student" /></h1>
	<h1>年龄:<jsp:getProperty property="age" name="student"/></h1>
</body>

javabean 删除 JavaBean

Page 范围:pageContext.removeAttribute(“javaBean Name”);
request 范围:request.removeAttribute(“javaBean Name”);
session 范围:session.removeAttribute(“javaBean Name”);
application 范围:application.removeAttribute(“javaBean Name”);

<body>
	<%
		application.removeAttribute("student");
	%>
	<h2>application已经删除!</h2>
</body>

五、Sevlet 开发详解

servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。


servlet实例

//FirstServlet.java
public class FirstServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setCharacterEncoding("gbk");
		PrintWriter out=response.getWriter();
		out.println("<html>");
		out.println("<hean><title>Servlet你好!</title></head>");
		out.println("你好,Servlet!");
		out.println("</html>");
	}
}

//WEB-INF\web.xml
<display-name>Servlet05</display-name>
  <welcome-file-list>
  ......
  </welcome-file-list>
  <servlet>
  	<servlet-name>firstServlet</servlet-name>
  	<servlet-class>com.tao.web.FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>firstServlet</servlet-name>
  	<url-pattern>/first</url-pattern>
  </servlet-mapping>

在这里插入图片描述


servlet 生命周期

Servlet 的生命周期,简单的概括这就分为四步:servlet 类加载—>实例化—>服务—>销毁。
init()—>doGet()/doPost()—>destroy()
一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方式提交)。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了


客户端跳转 VS 服务器端跳转

在Servlet中获取 session,application
2,客户端跳转:response.sendRedirect("目 标 地 址 “);
3,服务端跳转:RequestDispatcher rd=request.getRequestDispatcher(” 目 标 地 址 "); rd.forward(request, response);
过滤用户请求;
监听 web 事件;如 application,session,request

//RendirectServlet.java
@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setAttribute("requestKey", "request值");
		HttpSession session=request.getSession();//获取session
		session.setAttribute("sessionKey", "session值");
		ServletContext application=this.getServletContext();//获取applicaiton
		application.setAttribute("applicationKey", "application值");
		response.sendRedirect("target.jsp");
	}
//ForwardServlet.java
@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setAttribute("requestKey", "request值");
		HttpSession session=request.getSession();//获取session
		session.setAttribute("sessionKey", "session值");
		ServletContext application=this.getServletContext();//获取applicaiton
		application.setAttribute("applicationKey", "application值");
		RequestDispatcher rd=request.getRequestDispatcher("target.jsp");
		rd.forward(request, response);
	}
//WEB-INF\web.xml
<servlet>
  	<servlet-name>rendirectServlet</servlet-name>
  	<servlet-class>com.javaclimb.web.RendirectServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>rendirectServlet</servlet-name>
  	<url-pattern>/rend</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>forwardServlet</servlet-name>
  	<servlet-class>com.javaclimb.web.ForwardServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>forwardServlet</servlet-name>
  	<url-pattern>/forward</url-pattern>
  </servlet-mapping>
//target.jsp
<body>
<h1>获取值</h1>
request值:<%=request.getAttribute("requestKey") %>//ForwardServlet获取不到
session值:<%=session.getAttribute("sessionKey") %>
application值:<%=application.getAttribute("applicationKey") %>
</body>

六、el表达式

取值 ${}

${ pageScope. userinfo}表示访问page范围中的userinfo变量。

<% 
	pageContext.setAttribute("info1","page的值");
	request.setAttribute("info2","request的值");
%>
<h1>${info1}</h1>
<h1>${info2}</h1>

EL 表达式 11 个内置对象
在这里插入图片描述


EL 表达式访问的 4 种属性

获取值的顺序:page->request->session->application


EL 表达式接收请求参数

Param:单个参数 paramValues:一组参数

//Param:单个参数, 假设前面有传参数过来
<body>
	<h1>姓名:${param.name}</h1>
	<h1>年龄:${param.age}</h1>
</body>

EL 表达式对象操作

<body>
	<% 
		Student a = new Student();
		a.setName("tao");
		a.setAge(23);
		request.setAttribute("a",a);
	%>
	<h1>姓名:${a.name}</h1>
	<h1>年龄:${a.age}</h1>
</body>

EL 表达式集合操作

<body>
	<% 
		List test = new LinkedList();
		test.add(0,"aa");
		test.add(1,"bb");
		request.setAttribute("test",test);
	%>
	<h1>${test[0]}</h1>
	<h1>${test[1]}</h1>
</body>

EL 表达式运算符操作

<body>
<%
	request.setAttribute("num1",10);
	request.setAttribute("num2",3);
	request.setAttribute("flag1",true);
	request.setAttribute("flag2",false);
%>
<h1>算数运算符</h1>
<h2>num1=${num1 },num2=${num2 }</h2>	//10 3
<h2>num1+num2=${num1+num2 }</h2>		//13
<h2>num1-num2=${num1-num2 }</h2>		//7
<h2>num1*num2=${num1*num2 }</h2>		//30
<h2>num1/num2=${num1/num2 }</h2>		//3.33333333335
<h2>num1%num2=${num1%num2 }</h2>		//1
<h2>num1*(num1-num2)=${num1*(num1-num2) }</h2>	//70
<h1>关系运算符</h1>
<h2>flag1=${flag1 },flag2=${flag2 }</h2>		//true false
<h2>与操作flag1 && flage2:${flag1 && flage2 }</h2>	//false
<h2>或操作flag1 || flage2:${flag1 || flage2 }</h2>	//true
<h2>非操作!flag1:${!flag1}</h2>	//false
<h1>三目运算符</h1>
<h2>三目操作:num1>num2:${num1>num2?"yes":"no" }</h2>	//yes
<h1>empty关键字</h1>
<h2>判断空操作:${empty num1 }</h2>	//false
</body>

总结

Jsp的注释
<!-- --> Html 注释
<!-- -->Jsp 注释
// java 单行注释
/* */ java 多行注释

scriptlet 标签
通过 scriptlet 标签我们可以在 Jsp 里嵌入 Java 代码;
第一种:<%! %> 我们可以在里面定义全局变量、方法、类;
第二种:<% %> 我们可以在里面定义局部变量、编写语句;
第三种:<%=%> 我们可以在里面输出一个变量或一个具体内容;

指令介绍
Language : 用来定义要使用的脚本语言;
contentType:定义JSP字符的编码和页面响应的MIME类型;
pageEncoding:Jsp页面的字符编码,默认是 ISO-8859-1;一般改成utf-8
<%@ include file=”url”> 静态包含 先包含,后编译处理;
<jsp:include page=”url”> 动态包含 先编译处理,后包含; 以后开发用动态
包含;

Jsp 九大内置对象和四个作用域
在Jsp开发中,Jsp提供了9个内置对象,这些内置对象将由容器为用户进行实例化,用户直接使用即可。这个 9 个内置对象分别是:
pageContext,request,response,session,application,config,out,page,exception;常用的是前面 5 个,需要熟练掌握;
在 Jsp 开发中,可以保存数据,Jsp 提供了四种数据保存范围;分别是 page,request,session,application;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值