jsp简单入门

JSP是什么

  • JSP本质上就是一个Servlet,JSP主要负责与用户交互,将最终的页面呈现给用户。它是HTML+js+css+java的混合文件
  • 当服务器接收到一个后缀是jsp的请求时,将该请求交给jsp引擎去处理,每个JSP页面第一次被访问的时候,jsp引擎会将它翻译成一个servlet文件,再由web容器tomcat调用servlet完成响应。
  • 单纯从开发的角度看时,jsp就是在html中嵌入java程序。在执行时会变成在网页上显示内容相对应的servlet文件,它由tomcat自动完成。

jsp的三种嵌入方式

  • jsp脚本,执行java逻辑代码

<% java代码 %>

  • jsp声明,定义java方法

<%!
声明java方法
%>

  • jsp表达式,用来把java对象直接输出到html页面中

<%=java变量%>

  • 注意这里脚本和声明,因为在jsp中,java代码的定义方法和引用方法(一些逻辑代码。如for循环,new一个对象之类的)不能在一个<%java代码%>区域内实现,会报错,所以要分开那样写。

jsp内置的九个对象

1、request:表示⼀次请求,HttpServletRequest。
2、response:表示⼀次响应,HttpServletResponse。
3、pageContext:⻚⾯上下⽂,获取⻚⾯信息,PageContext。
4、session:表示⼀次会话,保存⽤户信息,HttpSession。
5、application:表示当前 Web 应⽤,全局对象,保存所有⽤户共享信息,ServletContext。
6、config:当前 JSP 对应的 Servlet 的 ServletConfig 对象,获取当前 Servlet 的信息。
7、out:向浏览器输出数据,JspWriter。
8、page:当前 JSP 对应的 Servlet 对象,Servlet。
9、exception:表示 JSP ⻚⾯发⽣的异常,Exception。

  • 常用的是request,response,session,application,pageContext

request常用方法

  1. 、String getParameter(String key) 获取客户端传来的参数。
   <%
      String id=request.getParameter("id");
    %>
    <%=id%>

在这里插入图片描述

  1. void setAttribute(String key,Object value) 通过键值对的形式保存数据。
  2. Object getAttribute(String key) 通过 key 取出 value。
  3. RequestDispatcher getRequestDispatcher(String path) 返回⼀个 RequestDispatcher 对象,该对象的 forward ⽅法⽤于请求转发。

234的方法用来将数据存入到request中兵器转发给另一个jsp文件,由它来完成对浏览器(客户端)的响应,这种传给别的jsp文件处理的方法可传递多次

index.jsp中
<%
      String id=request.getParameter("id");
      Integer idstr=Integer.parseInt(id);
      idstr++;
      //将数据存入到request中
      request.setAttribute("id",idstr);
      //将请求转发给test.jsp
      request.getRequestDispatcher("test.jsp").forward(request,response);
    %>
    
test.jsp中

       <%
       Integer number=(Integer)  request.getAttribute("id");
       %>
     <%=number%>

在这里插入图片描述

  1. String[] getParameterValues() 获取客户端传来的多个同名参数。
 <%
    request.setCharacterEncoding("UTF-8");
    String[] names=request.getParameterValues("name");
  %>
  <%=Arrays.toString(names)%>

接收多个参数并输出
在这里插入图片描述

  1. void setCharacterEncoding(String charset) 指定每个请求的编码。(避免产生乱码,加在要实现的jsp代码上一行)
request.setCharacterEncoding("UTF-8");

reponse常用方法

  • sendRedirect(String path) 重定向,⻚⾯之间的跳转。
  • 转发 getRequestDispatcher 和重定向 sendRedirect 的区别:

转发是将同⼀个请求传给下⼀个⻚⾯,重定向是创建⼀个新的请求传给下⼀个⻚⾯,之前的请求结束⽣ 命周期。
转发:同⼀个请求在服务器之间传递,地址栏不变,也叫服务器跳转。
重定向:由客户端发送⼀次新的请求来访问跳转后的⽬标资源,地址栏改变,也叫客户端跳转。 如果两个⻚⾯之间需要通过 request
来传值,则必须使⽤转发,不能使⽤重定向。 ⽤户登录,如果⽤户名和密码正确,则跳转到⾸⻚(转发),并且展示⽤户名,否则重新回到登陆⻚⾯(重定向)。

jsp内置对象作用域

  • 有四个内置对象作用域,分别是page、request、session、application,它们都有setAttribute,getAttribute方法。
  • page作用域:对应的内置对象是pageContext
  • request作用域:对应的内置对象是request
  • session作用域:对应的内置对象是 session
  • application 作⽤域:对应的内置对象是 application。
  • 它们的作用范围:page < request < session < application
  • page 只在当前⻚⾯有效
  • request 在⼀次请求内有效(转发可用)
  • session 在⼀次会话内有效(转发,重定向可用)
  • application 对应整个 WEB 应⽤的(在tomcat未关闭之前不同浏览器都可以访问)
//网站访问量统计

<%
 Integer count = (Integer) application.getAttribute("count");
 if(count == null){
 count = 1;
 application.setAttribute("count",count);
 }else{
 count++;
 application.setAttribute("count",count);
 }
%>
您是当前的第<%=count%>位访客

EL表达式

  • Expression Language表达式语言的简称,替代jsp页面中数据访问时的复杂代码,可以非常便捷的取出域对象(pageContext,request,session,application)中保存的数据,前提是一定要先setAttribute,EL就相当于在简化getAttribute操作。EL的底层就是getAttribute操作的相关操作。
  • 基本语法:$ (变量名) 或者 ${user[“变量名”]} 变量名就是setAttribute对应的key值
  • EL表达式对于四种域对象的默认查找顺序【pageContext -》request -》session-》application】。按照这个顺序进行查找,找到立即返回,在application中也无法找到则返回null.
//按照顺序依次访问
 pageContext.setAttribute("name","page");
 request.setAttribute("name","request");
 session.setAttribute("name","session");
 application.setAttribute("name","application");

  • 指定作⽤域进⾏查找(EL不仅可以取值,也可以设置值,但一般不在这里设置值,底层就是getAttribute调用getter,setter方法)

pageContext:$ {pageScope.name}
request:$ {requestScope.name}
session:$ {sessionScope.name}
application:$ {applicationScope.name}

  • 数据级联【可以访问$(变量名)中变量的各种属性,如果属性为private,则要设置getter,setter方法,否则访问失败。因为EL的底层代码是getAttribute的相关操作,会涉及到取值的操作】
User user = new User(1,"张三",86.5,new Address(1,"⼩寨"));
 System.out.println(user.toString());
 pageContext.setAttribute("user",user);
 %>
 <table>
 <tr>
 <th>编号</th>
 <th>姓名</th>
 <th>成绩</th>
 <th>地址</th>
 </tr>
 <tr>
 <td>${user.id}</td>
 <td>${user.name}</td>
 <td>${user.score}</td>
 <td>${user.address}</td>
 </tr>
 </table>
  • EL 执⾏表达式
    EL表达式不仅可以取变量,也可以比较相关变量

常见的比较式及使用:

使用: ${num1&&num2} 两个变量要写在同一个 $ 中
&& , || ,! ,< ,> ,<= ,>= 、 ==
&& 可以用and替代,同时在与它两边的变量要用空格隔开 ${num1 and num2}
|| 可以用or替代
! 可以用not替代
== 可以用eq替代
!= 可以用 ne替代
< 可以用lt替代
'> 可以用 gt替代
<= 可以用le替代
'>= 可以用ge替代
empty 表示变量为 null,⻓度为0的String,size为0的集合,当empty为空是,它是true值

JSTL

  • JSTL全称是jsp standard tag library ,jsp标准标签库,jsp为开发者提供的一系列的标签,使用这些标签可以完成一些逻辑处理,比如循环遍历集合,让代码更加简洁,不再出现jsp脚本穿插的情况。
  • 实际开发中EL和JSTL结合起来使用,JSTL侧重于逻辑处理,EL负责展示数据。

JSTL的使用

  1. 需要导入jar包(两个jstl.jar和standard.jar)存放的位置:在web/WEB-INF下新建一个lib来存放
  2. 在jsp页面开始的地方导入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>//c代指这个库,可以为任意字母
  1. 在需要的地方使用(使用方法和html很像,直接引入就好,不用管底层代码)
<c:forEach items="${list}" var="user">
 <tr>
 <td>${user.id}</td>
 <td>${user.name}</td>
 <td>${user.score}</td>
 <td>${user.address.value}</td>
 </tr>
</c:forEach>

JSTL的优点

  1. 提供了统⼀的标签
  2. 可以用于编写各种动态功能

核心标签库常用标签

  • set ,out , remove ,catch
  • set :向域对象中添加数据
<%
 requset.setAttribute(key,value)
%>
<c:set var="name" value="tom" scope="request"></c:set>
${requestScope.name}
<%
User user = new User(1,"张三",66.6,new Address(1,"科技路"));
request.setAttribute("user",user);
%>
${user.name}
<hr/>
<c:set target="${user}" property="name" value="李四"></c:set>
${user.name}
  • out: 输出域对象中的数据
<c:set var="name" value="tom"></c:set> 
<c:out value="${name}" default="未定义"></c:out>
  • remove: 删除域对象中的数据
<c:remove var="name" scope="page"></c:remove>
 <c:out value="${name}" default="未定义"></c:out>
  • catch: 捕获异常
<c:catch var="error">
 <%
 int a = 10/0;
 %>
</c:catch>
${error}
  • 条件标签: if choose
<c:set var="num1" value="1"></c:set>
 <c:set var="num2" value="2"></c:set> 
 <c:if test="${num1>num2}">ok</c:if> 
 <c:if test="${num1<num2}">fail</c:if> 
 <hr/>
<c:choose>
 <c:when test="${num1>num2}">ok</c:when>
 <c:otherwise>fail</c:otherwise>
</c:choose>
  • 迭代标签: forEach
<c:forEach items="${list}" var="str" begin="2" end="3" step="2"
varStatus="sta">
 ${sta.count}、${str}<br/>
</c:forEach>
  • 格式化标签库常用的标签
<%
request.setAttribute("date",new Date());
%>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss">
</fmt:formatDate><br/>
<fmt:formatNumber value="32145.23434" maxIntegerDigits="2"
maxFractionDigits="3"></fmt:formatNumber>
  • 函数标签库常用的标签
<%
request.setAttribute("info","Java,C");
%>
${fn:contains(info,"Python")}<br/>
${fn:startsWith(info, "Java")}<br/>
${fn:endsWith(info, "C")}<br/>
${fn:indexOf(info, "va")}<br/>
${fn:replace(info, "C","Python")}<br/>
${fn:substring(info, 2, 3)}<br/>
${fn:split(info, ",")[0]}-${fn:split(info, ",")[1]}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP(Java Server Pages)是一种用于开发动态Web应用程序的Java技术。JSP教材PDF是指一本关于教授JSP编程知识的电子书,通常以PDF格式提供。以下是关于JSP教材PDF的回答。 JSP教材PDF对于学习和了解JSP编程语言非常有帮助。它提供了关于JSP基础知识、语法和概念的详细说明,以及如何在Web应用程序中使用JSP开发动态内容的实际示例。 通过阅读JSP教材PDF,学习者可以了解JSP的工作原理、核心概念和基本语法。教材通常以简单易懂的方式解释这些概念,并提供了大量的示例代码和练习题,以帮助读者更好地理解和应用所学的内容。 JSP教材PDF通常涵盖了JSP的各个方面,包括JSP标签、表达式、脚本元素、内建的JSP对象、JSP指令、JSP动作和JSTL(JSP标准标签库)等。教材还可能涉及与数据库的连接、数据检索和处理、会话管理、错误处理和JSP安全等相关主题。 对于初学者来说,JSP教材PDF是入门JSP编程的一种理想方式。它提供了系统化的学习资源,帮助学习者逐步掌握JSP编程的基础知识和技巧。同时,对于有经验的开发人员来说,教材也可以作为参考手册,供他们查阅和深入研究特定主题。 总而言之,JSP教材PDF对于学习JSP编程是非常有益的。它提供了深入浅出的学习材料,帮助学习者掌握JSP的基本概念和技术,并通过示例和练习引导他们进一步应用所学的知识。无论是初学者还是有经验的开发人员,阅读JSP教材PDF都有助于提升他们的JSP编程技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值