*JSP相关总结

1. JSP简介

JSP(Java ServerPages)是JavaWeb服务器端的动态资源,它与html页面的作用是相同的,显示数据和获取数据,运行在服务器端(底层是servlet

jsp: 作为请求发起页面,例如显示表单、超链接;作为请求结束页面,例如显示数据。

Servlet:作为请求中处理数据的环节。

jsp的组成

jsp = html +java脚本 + jsp标签(指令)

jsp中可直接使用的对象一共有9个,被称之为9大内置对象

3java脚本

表达式   <%=表达式%>

    局部代码<%  java代码   %> 

全局声明  <%! 方法、变量 %>

jsp注释

html注释<!--  -->客户端可见

     java注释 <%-- -->客户端不可见(当服务器把jsp编译成java文件时已经忽略注释部分)运行原理

A.       客户端发送请求,jsp翻译成java文件(Servlet

B.       编译生成class文件

C.       创建该类对象

D.       调用它的service()方法

E.        第二次请求同一个jsp时,直接调用service()方法,使用已经编译好的字节码文件

jsp文件的修改,会让jsp重新翻译和编译.

2. jsp三大指令

A.page指令:设置当前jsp页面属性,怎样运行jsp页面

  写法: <%@page 属性名="值"  属性="值"....%>

  属性

    import:导入java包,可以写多个

          pageEncoding:当前页面的编码,jsp文件翻译成java文件所使用的编码,服务器需要知道这个jsp文件应该是什么编码

          contentType:contentType="text/html;charset=utf-8"  响应的页面应该用什么编码来显示

             第一阶段:jsp翻译成java文件(pageEncoding)

             第二阶段:java文件编译成class文件(UTF-8)

             第三个阶段:tomcat加载class文件,输出结果(contentType)

             建议:pageEncoding,contentType都是UTF-8

B.include包含指令

   <jsp:include>:页面包含动态包含

         <jsp:param>:携带参数

         静态包含:<%includefile="要包含的文件"%>   先包含,后编译处理

         动态包含:<jsp:includepage="要包含的文件"> 先编译处理,后包含

         静态包含不能携带参数,动态包含携带参数

C.forward跳转指令

         <jsp:forwardpage="页面地址"> 服务器内部转发(页面不跳转)不用写项目名,不会丢失request请求

             <jsp:param value="karry"name="aidou"/> 可携带参数,value值显示在前端

         </jsp:forward>

             通过request.getParameter():得到参数值

D.taglib 导入标签库

两个属性:

prefix:指定标签库在本页面中的前缀!由我们自己来起名称!

uri: 指定标签库的位置!

<%@taglibprefix=”s” uri=”地址”%> 前缀的用法<s:text>

3.  JSP九大内置对象及四大作用域概述

这些内置对象将由容器为用户进行实例化,用户直接使用即可,常用pageContext,request,response,session,application(config,out,page,exception)

JSP四大作用域:pageContext,request,sessionapplication域对象  不同范围内数据共享

通用的方法:removeAttribute, setAttribute,getAttribute

1.pageContext范围:只在一个页面中保存数据,javax.servlet.jsp.PageContext(抽象类),相当于页面中所有对象功能的集合,即使用它可以访问到本页面所有对象(一个顶九个!)。

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

         客户端--->服务器  请求对象

         方法:域对象方法

获取客户端信息(头部信息,防止盗链)、获取请求参数(表达数据)

中文乱码:

get:newString(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"):

post: request.setCharacterEncoding("UTF-8");

3.Session范围:在一次会话范围中保存数据,仅供单个用户使用(一次通话),javax,servlet,http,HttpSession(接口)

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

response

         与request对应,服务器-->客户端,响应用户请求

         自动刷新应用,

                  页面重定向,客户端跳转

                  操作cookie应用

config

Servlet在web.xml初始化的时候,jsp引擎通过config向它传递信息 

         <init-param>

                   <param-name>jdbcName</param-name>

                   <param-value>com.mysql.jdbc.Driver</param-value>

</init-param>

        

StringjdbcName=config.getInitParameter("jdbcName");

4. javaBean标签

         使用java语言开发的一个可重用组件,在JSP开发中可以使用javaBean减少重复代码。JavaBean主要是用来通过反射操作的类!因为需要通过Class的newInstance()方法来创建类的实例,所以要求类必须提供public的无参构造器。

a.      jsp:useBean创建javaBean

         <!--id="实例化对象名称" scope="保存范围" class="类完整名称" -->

         <jsp:useBeanid="student" scope="page"class="com.yunhe.Student" />

b.      jsp:setProperty设置javabean属性值   

<jsp:setProperty property="属性名称"name="实例化对象的名称" value="属性值" param="参数名称"/>

         Value:设置后无论输入什么值,都提交显示value值

         Param:当属性名称!=提交属性名称时,可使参数名称=提交属性名

         property="*"自动匹配所有

c.      jsp:getProperty获取javabean属性值

         <jsp:getPropertyproperty="属性名称" name="实例化对象的名称" />

d.      javabean的保存范围  

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

e.      javabean删除

         page范围:pageContext.removeAttribute("javaBeanName"); 

         request范围:request.removeAttribute("javaBeanName");

         session范围:session.removeAttribute("javaBeanName");

         application范围:application.removeAttribute("javaBeanName");

5.EL表达式

         Jsp内置的表达式语言,用来替代jsp中的java代码。规则:${表达式语言}

         JSP页面也可以忽略EL:<@pageisELIgnored=”true”%>

         EL可以输出的东西都在11个内置对象中!11个内置对象,其中10个是Map!pageContext不是map,它就是PageContext类型,1一个顶九个。

作用:

      获取域对象中的值(重要)

      执行运算

      调用方法(了解)

      el表达式中内置对象

获取值的写法

    .的方式:

    [""]的方式:如果key中有特殊字符,必须使用[]的方式

    关于数组,对象,集合,map值的获取

EL操作四大域的内置对象:它们是Map类型

pageScope 、requestScope 、sessionScope 、applicationScope

6. jstl标签库

jsp标准标签库,导入jar包。jstl依赖el表达式,使用el表达式获取值

使用步骤:1. 导入jar(jstl.jar  standard.jar)

              2. 在jsp使用taglib命令导入标签库

out标签:输出内容(常量值,域对象的值)

<c:out value="${pageScope.name }"default="无名"></c:out>

    value:输出的内容

    escapeXml:是否转义

    default:默认值

set标签:向域对象中赋值

<c:set var="name" value="wjk"scope="page"></c:set>

    var:值的key

    value:值

    scope:范围(从配置范围寻找值,找不到按page  request  session application顺序找)

remove标签(了解) <c:removevar="pass"/>

if标签(重点)

<c:set var="a"value="10" scope="page"></c:set>

<c:if test="${a eq 10}" var="result" scope="page">

       <c:outvalue="a=10"></c:out>

</c:if>       

<c:out value="${pageScope.result}"></c:out>

         test:判断的条件

         var:将判断的结果赋值给某一个变量

         scope:作用域(将变量赋值给某个域对象)

choose标签(重点)

<c:choose>

       <c:when test="${a gt10}">

              <c:outvalue="a>10"></c:out>

       </c:when>

       <c:when test="${a lt10}">

              <c:outvalue="a<10"></c:out>

       </c:when>

       <c:otherwise>

              <c:outvalue="a=10"></c:out>

       </c:otherwise>

</c:choose>

foreach标签(重要)

<c:forEachvar="a" begin="1" end="10" step="2"varStatus="as"><!-- 注意大小写 -->

       ${a }

       ${as.count }

       ${as.first }

       ${as.last }

       </br>

</c:forEach>

         var  :声明变量

         begin:从哪开始

         end:结束

         step:步长

         varStatus:循环状态变量

* count:循环元素的个数                             

* index:循环元素的下标

* first:是否为第一个元素

* last:是否为最后一个元素

* current:当前元素

7.       Tomcat

黑窗口闪退:-->javahome配置  因为tomcat本来就是一个java程序,运行需要jvm

端口占用时除了修改端口号:杀死占用端口的进程 taskkill /pid 端口号 -t -f

tomcat安装目录(开源,轻量级)

    bin:存放tomcat启动和终止的文件

    conf:tomcat配置文件

    lib:tomcat运行所需要jar文件

    logs:tomcat日志文件

    temp:运行时存放的临时文件

    webapps:部署的项目

    work:JSP和session所需要的文件(存放jsp比那以后产生的class文件)

配置 web.xml,每次修改完必须重启服务器。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值