当前位置:网站首页 > Java基础 > 正文

java管理系统基础源代码



一、jsp概述

1、JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP实际上就是Servlet。

JSP其实就是在HTML页面中嵌入Java代码。

代码

html:静态内容

servlet:服务器端的小应用程序。适合编写java逻辑代码,如果编写网页内容--苦逼。

jsp:适合编写输出动态内容,但不适合编写java逻辑。

2、JSP与Servlet的关系是什么?

是JSP的前身,本质上是一样的。

页面在运行时由Web容器先转换成Servlet类, 然后编译,再运行编译好的.class文件,最终转换成HTML代码发送给客户端浏览器。Servlet:控制器。重点编写java代码逻辑 (获取表单数据、处理业务逻辑、分发转向)

JSP:代码显示模板。重点在于显示数据

二、jsp原理(*)

三、jsp语法

、JSP模版元素

网页的静态内容。如:html标签和文本。

2、JSP的脚本

2.1、小脚本 <% java代码 %>

2.1、表达式 <%= 2+3 %> 等价于out.print(2+3);

    

、JSP注释

JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量

网页注释:<!-- 网页注释 -->    特点:不安全,费流量

、3指令

5、6动作

6、9内置对象

四、Jsp的三个指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

在JSP 2.0规范中共定义了三个指令:

page指令

Include指令

taglib指令

语法:

<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>

或者:

<%@ 指令名称 属性1=“属性值1”%>

<%@ 指令名称 属性2=“属性值2”%>

如:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page language="java" %>

<%@ page import="java.util.*" %>

1、page:

作用:用于定义JSP页面的各种属性

属性:

1.1、 import 和java代码中的import是一样的

<%@ page import="java.util.Date,java.util.List"%>

或者:

<%@ page import="java.util.Date"%>

<%@ page import="java.util.List"%>

JSP会自动导入以下的包:

import java.lang.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

1.2、 session: 是否会自动创建session对象。默认值是true;

1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.

1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。

errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。

如果不写“/”则代表相对路径。

、 isErrorPage: 是否创建throwable对象。默认是false;

1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");

1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。

1.8、 isELIgnored: 是否支持EL表达式。 默认是false

<%@ page pageEncoding="gbk" %>

、include:

静态包含:把其它资源包含到当前页面中。

<%@ include file="/include/header.jsp" %>

动态包含:

<jsp:include page="/include/header.jsp"></jsp:include>

两者的区别:翻译的时间段不同

前者:在翻译时就把两个文件合并

后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静的就不用动的。

、taglib

作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

五、jsp的6个动作

使用标签的形式来表示一段java代码。

如:

1)<jsp:include > 动态包含

2)<jsp:forward> 请求转发

3)<jsp:param> 设置请求参数

4)<jsp:useBean> 创建一个对象

5)<jsp:setProperty> 给指定的对象属性赋值

6)<jsp:getProperty> 取出指定对象的属性值

六、JSP的9个内置对象

指在JSP的<%=%> 和<% %>中可以直接使用的对象

在JSP中为了简化用户的开发,提供了九个内置对象,这些内置对象将由容器为用户进行实例化,而用户直接使用即可,而不用像在java中那样,必须通过关键字new进行实例化对象之后才可以使用。

对象名

类型

说明

request

javax.servlet.http.HttpServletRequest

response

javax.servlet.http.HttpServletResponse

session

javax.servlet.http.HttpSession

由session="true"开关

application

javax.servlet.ServletContext

exception

java.lang.Throwable

由isErrorPage="false"开关

page

java.lang.Object当前对象this

当前servlet实例

config

javax.servlet.ServletConfig

java管理系统基础源代码

out

javax.servlet.jsp.JspWriter

字符输出流,相当于 printWriter对象

pageContext

javax.servlet.jsp.PageContext

     

pageContext(重要)

1、本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据

void setAttribute(String name,Object o);

Object getAttribute(String name);

void removeAttribute(String name);

操作其它域对象的方法

void setAttribute(String name,Object o,int Scope);

Object getAttribute(String name,int Scope);

void removeAttribute(String name,int Scope);

scpoe的值:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE

PageContext.APPLICATION_SCOPE

findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找。

2、它可以创建其它的8个隐式对象

在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。

3、提供了的简易方法

pageContext.forward("2.jsp");

     pageContext.include("2.jsp");

七、四大域对象

存放的数据在当前页面有效。开发时使用较少。

ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。

HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。

ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

八、EL表达式语言

1、

EL概述与基本语法

   

表达式语言(Expression Language)是JSP2.0中新增的功能。使用表达式语言(EL)可以在JSP页面进行方便地输出内容。EL语法为:${表达式}

EL表达式:expression language 表达式语言

要简化jsp中java代码开发。

它不是一种开发语言,是jsp中

获取数据

的一种规范

2、

EL具体功能

1) 获取数据

EL表达式只能获取存在4个作用域中的数据

${u} 原理: pageContext.findAttribute("u");

url?name=tom ${param.name}

EL获取对于null这样的数据,在页面中表现为空字符串

${u.name} == u.getName()方法

点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。

   

属性导航

    

运算符:点能做的,它也能做; 它能做的,点不一定能做

${student.name}== ${student['name']} == ${student["name"]}

    

2) 运算

算数运算符

      + - * /(div) %(mod)

参数相加

关系运算符

       < (lt) > (gt) == (eq) !=(ne) >=(ge) <=(le)

逻辑运算符

         &&(and)   ||(or) !(not)

运算符

表达式} 判断是否为null或空字符串””

5. 三目运算符

返回true或false的表达式 ? "为true时输出的内容":"为false时输出的内容"}

6. 括号运算符

用来改变运算顺序的

3) 使用EL访问不同的属性范围

${pageScope.属性名}

属性名}

属性名}

属性名}

注意:

如果使用 "${属性名}" 的方式访问属性范围,

则属性范围的访问顺序是pageContext、request、session、application。

4) 使用EL访问JSP内置对象

使用EL的pageContext内置对象访问JSP的内置对象。

对应的jsp内置对象}

例如:

获取上下文路径:

特殊:

   ${pageContext.servletContext.contextPath}

访问session的ID:

   ${pageContext.session.id}

5) EL访问参数(访问客户端发送的参数、全局参数、 一组参数)

用途一:

使用EL的param内置对象访问客户端发送的参数

参数名}

用途二:

使用EL的initParam内置对象访问上下文参数(全局参数)

在web.xml中配置上下文参数:

     <context-param>

        <param-name>admin</param-name>

        <param-value>Obama</param-value>

     </context-param>

用途三:

使用EL的paramValues访问一组参数

${paramValues.参数名[0]}   获取提交来的第一个参数值

${paramValues.参数名[n]}   获取提交来的第(n+1)个参数值

6) 访问cookie

举个例子:

通过EL的cookie内置对象访问JSESSIONID名称的 cookie的语法:

       ${cookie["JSESSIONID"].name}

       ${cookie["JSESSIONID"].value}

7)  访问header

使用EL的header内置对象访问请求header信息

比如:

   ${header["cookie"]}

3、

EL的11个隐式对象

EL隐式对象引用名称

类型

JSP内置对象名称

说明

pageContext

javax.servlet.jsp.PageContext

pageContext

一样的

pageScope

java.util.Map<String,Object>

没有对应的

pageContext范围中存放的数据,页面范围

requestScope

java.util.Map<String,Object>

没有对应的

请求范围数据

sessionScope

java.util.Map<String,Object>

没有对应的

会话范围数据

applicationScope

java.util.Map<String,Object>

没有对应的

应用范围数据

param

java.util.Map<String,String>

没有对应的

一个请求参数

paramValues

java.util.Map<String,String[]>

没有对应的

重名请求参数

header

java.util.Map<String,String>

没有对应的

一个请求消息头

headerValues

java.util.Map<String,String[]>

没有对应的

重名请求消息头

initParam

java.util.Map<String,String>

没有对应的

web.xml中全局参数

cookie

java.util.Map<String,Cookie>

没有对应的

key:cookie对象的name值

br>

br>

br>

br>

br>

br>

br>

br>

JSTL概述与作用:

/strong>JSTL(JavaServerPages Standard Tag Library)JSP标准标签库

引入JSTL的步骤:

/strong>第一步:将jstl-xx.jar导入/WEB-INF/lib文件夹下。

使用JSTL

  

/strong>JSP页面使用taglib指令引入xxx.tld文件

常用标签

/strong>1.输出标签

   

/strong>设置对象的属性值

br>

JSP其实就是在HTML页面中嵌入Java代码。

代码

br>

col>

col>

col>

对象名

类型

说明

request

javax.servlet.http.HttpServletRequest

response

javax.servlet.http.HttpServletResponse

session

javax.servlet.http.HttpSession

由session="true"开关

application

javax.servlet.ServletContext

exception

java.lang.Throwable

由isErrorPage="false"开关

page

java.lang.Object当前对象this

当前servlet实例

config

javax.servlet.ServletConfig

out

javax.servlet.jsp.JspWriter

字符输出流,相当于 printWriter对象

pageContext

javax.servlet.jsp.PageContext

EL隐式对象引用名称

类型

JSP内置对象名称

说明

pageContext

javax.servlet.jsp.PageContext

pageContext

一样的

pageScope

java.util.Map<String,Object>

没有对应的

pageContext范围中存放的数据,页面范围

requestScope

java.util.Map<String,Object>

没有对应的

请求范围数据

sessionScope

java.util.Map<String,Object>

没有对应的

会话范围数据

applicationScope

java.util.Map<String,Object>

没有对应的

应用范围数据

param

java.util.Map<String,String>

没有对应的

一个请求参数

paramValues

java.util.Map<String,String[]>

没有对应的

重名请求参数

header

java.util.Map<String,String>

没有对应的

一个请求消息头

headerValues

java.util.Map<String,String[]>

没有对应的

重名请求消息头

initParam

java.util.Map<String,String>

没有对应的

web.xml中全局参数

cookie

java.util.Map<String,Cookie>

没有对应的

key:cookie对象的name值









九、JSTL

1、JSTL概述与作用:

JSTL(JavaServerPages Standard Tag Library)JSP标准标签库

使用JSTL实现JSP页面中逻辑处理。如判断、循环等。

2、引入JSTL的步骤:

第一步:将jstl-xx.jar导入/WEB-INF/lib文件夹下。

   

第二步:将jstl-xx.jar解压后的META-INF文件夹下的xxx.tld文件拷贝到/WEB-INF/的某目录下

第三步:在JSP页面使用taglib指令引入xxx.tld文件。

   

3、使用JSTL

  JSP页面使用taglib指令引入xxx.tld文件

指向xxx.tld文件的路径"     prefix="JSTL标签前缀"%>

注意:uri中指向xxx.tld文件的路径有两种写法:

第一种:直接指向xxx.tld文件的路径

第二种:在web.xml中配置taglib的uri

          <jsp-config>

                   <taglib>

                         <taglib-uri>http://www.xxx.com</taglib-uri>

                         <taglib-location>/WEB-INF/c.tld</taglib-location>

                   </taglib>

          </jsp-config>

4、常用标签

1.输出标签

输出的内容,支持EL" default=" 默认值,支持EL"/>

2.设置标签

设置属性范围的属性值

属性名" value="属性值,支持EL" scope="属性范围"/>

   设置对象的属性值

“${perObj}” property=“对象的属性名” value=“支持EL"/>

3.捕获异常标签

保存异常信息的属性名">

有可能发生异常的代码

    </c:catch>

4.判断标签

判断表达式,支持EL">

判断结果为true,执行此处

     </c:if>

5.forEach标签(遍历list集合或Map集合)

当前正在遍历的对象,作为属性用(msg)" items="要遍历的集合,支持EL">

            ${msg}

      </c:forEach>

6.choose标签

      <c:choose>

          <c:when test="${param.score>=90}">

优秀</h3>

          </c:when>

          <c:when test="${param.score>=80}">

良好</h3>

          </c:when>

          <c:otherwise>

不及格,要加油!</h3>

          </c:otherwise>

      </c:choose>

版权声明


相关文章:

  • 零基础学java好还是自学2024-11-04 10:26:04
  • java基础面试的点2024-11-04 10:26:04
  • java基础案例教学第二版2024-11-04 10:26:04
  • java的8种基础数据类型2024-11-04 10:26:04
  • java for循环基础讲解2024-11-04 10:26:04
  • java基础能就业吗2024-11-04 10:26:04
  • java高频基础面试题2024-11-04 10:26:04
  • java基础语法二维2024-11-04 10:26:04
  • 零基础黑马学java2024-11-04 10:26:04
  • java程序设计基础 清华2024-11-04 10:26:04