jsp基础

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
webapps 目录 : 需要访问 静态文件/jsp文件/web项目 必须加载到这个目录下
清除Tomcat缓存 : 删除 work / webAPPs 目录下的内容
如果JSP名字 index.jsp 访问可以省略文件名
http:\ip地址:端口号\文件路径\文件名
http://127.0.0.1:8080/项目名/文件路径名
404 请求资源不可用 路径错了
500 代码错误
在这里插入图片描述
JSP环境的构建(jdk,tomcat,eclipse)
jdk+tomcat+myEclipse3.7

  1. 配置 Java开发工具( JDK)
  2. 设置 Web服务器: Tomcat[CATALINA_HOME]
    1.jsp被放在tomcat这个web服务器里面
    2.tomcat是jsp容器
    3.tomcat是Apache(阿帕奇)开源组织下一个web服务器
    4.tomcat的版本号为6.0/7.0/8.0
    5.tomcat6和jdk1.6/ tomcat7和jdk1.7 /tomcat8和jdk1.8
    6.tomcat默认的端口号为8080
  3. 安装 Eclipse或者 MyEclipse
    1.在myeclispe中配置jdk
    2.在myeclispe中配置tomcat
    3.设置eclipse中java文件以及jsp文件的编码为utf-8,设置字体大小
    4.新建web project
    5.新建tomcat server,部署web project,启动tomcat server## 标题
    在这里插入图片描述
    在这里插入图片描述
    分包:
    controller包 -----------------------------------------------------------------------控制层-----servlet --控制类
    service包--------------------------------------------------------------------业务层 -------空
    pojo /entity/ model包 ----------------------------------------------------实体层-----------封装类 实体类 (表)
    dao包 -------------------------------------------------------------------- --持久层--------操作数据库—jdbcJSP本质
    就是 servlet
    servlet(server applet) 专门用来处理客户端请求的 java web 应用程序
    在这里插入图片描述
    Servlet应用:
    命名:×××Servlet 首字母大写 驼峰规则 见名识意
    继承 HttpServlet
    重写 init() service()(doGet() doPost() ) destroy()
    配置:web.xml
    在这里插入图片描述
    在这里插入图片描述

什么是XML
XML(Extensible Markup Language)XML是一种可扩展标识语言,是一种简单的数据存储语言,使用一系列简
第1行是XML声明:<?xml version="1.0"?>
单的标记描述数据。目前推荐遵循的是W3C组织,文档的
如何编写xml文件
文档的第1行是XML声明:<?xml version="1.0"?>
根元素的开始
文档的第2行是
文档的最后一行是根元素的结束
XML 中的注释: 年发布的XML1.0版本。
在这里插入图片描述
XML语法规则
所有XML 元素都须有关闭标签
可以在一个标签中同时表示起始和结束标签(单标签)
大小写敏感
XML标签必须正确地嵌套
XML 文档有且只有一个根元素
XML元素的属性必须有属性值
XML元素的属性值必须加引号(单引或双引都可以)
使用预定义的实体引用代替特殊字符
在XML 中,一些字符拥有特殊的意义,为避免混淆和错误,请用实体引用来代替特殊字符。
在XML 中,有5 个预定义的实体引用:
< 小于号<
> 大于号>
& 和号&
’ 单引号‘
" 双引号”
  空格
xml元素命名规则
名字可以包含字母,数字和其他字符。
名字不能以数字或者标点符号开头。
名字不能以XML(或xml,Xml,xMl)开头。
名字不能包含空格
xml的特点
XML标记并不是预先规定好的,必须自己创造标记。
XML具有很好的扩展性,可根据需求简单的自行添加元素和属性。
XML是一种跨平台的,与软、硬件无关的,处理信息的工具。

JavaBean:

在这里插入图片描述

什么是Servlet?
在这里插入图片描述

javax.servlet包

在这里插入图片描述

javax.servlet.http包
在这里插入图片描述

Servlet运行流程
在这里插入图片描述
表单form action=“” 写入web.xml 文件下下的内容

根据请求的路径去WEB.xml中找对应的 找到对应的

中的 与下的一致

根据下的找到

根据中的servlet实体类的路径请求到 servlet实体类中 根据form提交方式method = get/post 调用 doGET() doPost()方法 不写默
认是get方式
Servlet的生命周期
在这里插入图片描述
Servlet容器是指tomcat

  1. 实例化 servlet容器创建servlet实例
  2. 初始化 调用init()方法
    在web.xml文件中配置 标签
    当标签中值 0或者大于0时候 ,在tomcat启动时初始化指定servlet,数值越小优先级越高。当值为负数或者没有
  3. 销毁 destroy() 销毁servlet对象 释放资源
  4. 标为不可用 垃圾回收
    生命周期中servlet的初始化和销毁只发生一次,init() destroy()方法只调用一次,service()调用次数取决于请求
    次数
    ServletConfig 获取配置信息 和初始化参数
    在这里插入图片描述

在这里插入图片描述

注意:

在这里插入图片描述

EL表达式

jsp中的EL表达式

外的jar包。一、JSP EL简介
1、 语法结构
${expression} expression 表达式
2、 [ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
注意:使用[]的时候参数要加“” 使用[]参数错误是会什么都不输出,而使用.参数错误时,会报错
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[

 ${user.My_Name}应当改为${user["My_Name"] },如果使用中括号则key需要将其用双引号括起来。
 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
     ${sessionScope.user[data]}中data 是一个变量

3、 变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username
的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application
范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回
传null。<不显示> el表达式的取值范围是根据作用域从小到大查找的, pageContext–》request–》session-
-》application
属性范围在EL中的名称
Page PageScope Request RequestScope
Session SessionScope sessionScope
Application ApplicationScope applicationScope
二、JSP EL 中的有效表达式
有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。我们将分别了解这些有效表达式中的
每一种:
1、 文字
JSP 表达式语言定义可在表达式中使用的以下文字:
文字 文字的值
Boolean true 和 false
Intege r 与 Java 类似。可以包含任何正数或负数,例如 24、-45、567
Float 与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567
String 任何由单引号或双引号限定的字符串。对
于单引号、双引号和反斜杠,使用反斜杠
字符作为转义序列。必须注意,如果在字
符串两端使用双引号,则单引号不需要转
义。
Null null

2、 操作符
JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:
术语 定义
算术
型 +、-(二元)、*、/、div、%、mod、-(一元数学运算符,减操作或者对一个值取反)
逻辑
型 and、&&、or、||、!、not
关系
型 ==、eq、!=、ne、>、gt、<=、le、>=
、ge。可以与其他值进行比较,或与
布尔型、字符串型、整型或浮点型文
字进行比较。
空 空操作符是前缀操作,可用于确定值是否为空。empty
条件
型 A ?B :C。根据 A 赋值的结果来赋值 B 或 C。

3、 隐式对象
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:
pageCo ntext JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求
、响应、会话、输出、
servletContext 等。例如,${pageContext.response} 为页面
的响应对象赋值。
此外,还提供几个隐式对象,允许对以下对象进行简易访问:
术语 定义
param 将请求参数名称映射到单个字符串参数值(通过调用 Se rvletRequest.getParameter (String name) 获得)。getParam
eter (String) 方法返回带有特定名称的参数。表达式 $(par am.name) 相当于 request.getParameter (name)。
param
Values 将请求参数名称映射到一个数值数组(通过调用 Servlet
Request.getParameter (String name) 获得)。它与 param
隐式对象非常类似,但它检索一个字符串数组而不是单
个值。表达式 ${paramvalues.name) 相当于 request.getPar amterValues(name)。
heade r 将请求头名称映射到单个字符串头值(通过调用 Servlet
Request.getHeader(String name) 获得)。表达式 ${header .name} 相当于 request.getHeader(name)。
heade rValue s 将请求头名称映射到一个数值数组(通过调用 ServletRe quest.getHeaders(String) 获得)。它与头隐式对象非常类似。表达式 ${headerValues.name} 相当于 request.getHea derValues(name)。
cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。表达式 ${cooki e.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerVal ues.name} 表达式。
initPar
am 将上下文初始化参数名称映射到单个值(通过调用 Servl etContext.getInitparameter(String name) 获得)。
除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、
页面:
术语 定义
pageSco pe 将页面范围的变量名称映射到其值。例
如,EL 表达式可以使用
${pageScope.objectName} 访问一个 JSP
中页面范围的对象,还可以使用
${pageScope.objectName.attributeName}
访问对象的属性。
requestS cope 将请求范围的变量名称映射到其值。该
对象允许访问请求对象的属性。
例如,EL 表达式可以使用 ${requestSco pe.objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope.obje ctName.attributeName} 访问对象的属性

sessionS cope 将会话范围的变量名称映射到其值。该
对象允许访问会话对象的属性。例如:

KaTeX parse error: Expected 'EOF', got '}' at position 18: …ssionScope.name}̲ applicati onSc…{pageContext} 也返回 PageContext 对象。
2、 注意 <%@ page isELIgnored=“true” %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0
中默认的启用EL语言。四、举例说明
1、 例如,
< %=request.getParameter(“username”)% > 等价于 ${ param.username }
2、 例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。s

  <%=user.getAddr( ) %>      等价于     ${user.addr}。

3、 例如:
<% =request.getAttribute(“userlist”) %> 等价于${ requestScope.userlist }
4、 例如,原理如上例3。
${ sessionScope.userlist } 1
${ sessionScope.userlist } 2
${ applicationScope.userlist } 3
${ pageScope.userlist } 4
${uselist} 含义:执行顺序为4 1 2 3。
“.”后面的只是一个字符串,并不是真正的内置对象,不能调用对象。
4、例如,
<%=user.getAddr( ) %> 等价于 ${user.addr}
第一句前面的user,为一个变量。
第二句后面user,必须为在某一个范围里的属性。

jstl

JSTL 核心标签库
JSTL:
JSTL全名为JavaServer Pages Standard Tag Library即java服务端页面的标准标签库,Web程序员能够利
用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(jsp scriptlet)的做法,以提高程序
的阅读性、维护性和方便性。

使用标签时,一定要在jsp文件头加入以下代码:
<% @taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
下面分别对这些标签进行说明:

  1. <c:out> 用来显示数据对象(字符串、表达式)的内容或结果 用于在JSP中显示数据,就像<%= … >
    使用Java脚本的方式为:<% out.println(“hello”) %> <% =表达式 %> 使用JSTL标签:<c:out value=“字符串”>,
    属性 描述 是否必要 默认值
    value 要输出的内容 是 无
    default 输出的默认值 否 主体中的内容
    escapeXml 是否忽略XML特殊字
    符 否 true

例如:


那么网页显示效果为:

<% @ page language=“java” import=“java.util.*” pageEncoding=“gb2312” %>
<% @page contentType=“text/html; charset=utf-8” %>
jsp:useBean id=“person” class=“lihui.Person”></jsp:useBean
<>
<% @taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

html
<>
head
<>
title > JSTL测试</title
<>

body <> c:set value="张三" var="name1" scope="session"> c:set var="name2" scope="session">李四 c:set value="赵五" target="${person}" property="name"> c:set target="${person}" property="age">19
  • 从session中得到的值:${sessionScope.name1}
  • 从session中得到的值:${sessionScope.name2}
  • 从Bean中获取对象person的name值: < c:out value="${person.name}">
  • 从Bean中获取对象person的age值: < c:out value="${person.age}">
  • 一共有四种语法格式,前两种是给jsp的范围变量赋值,后两个是给 javabean 变量赋值 效果如下: 3. 主要用来从指定的 jsp 范围内移除指定的变量。使用类似,下面只给出语法:

    例:
    <c:set var=“score”>85</c:set

    c:choose
    <>
    <c:when test="${score>=90}">
    你的成绩为优秀!
    </c:when

    <c:when test="${score>=70&&score<90}">
    您的成绩为良好!
    </c:when

    <c:when test="${score>60&&score<70}">
    您的成绩为及格
    </c:when

    c:otherwise
    <>
    对不起,您没有通过考试!
    </c:otherwise

    </c:choose

    7.<c:forEach>
    语法:<c:forEach var=“name” items=“Collection” varStatus=“statusName” begin=“begin” end=“end” step=“step”>
    </c:forEach>
    该标签根据循环条件遍历集合 Collection 中的元素。 var 用于存储从集合中取出的元素;items 指定要遍历的
    集合;varStatus 用于存放集合中元素的信息。varStatus 一共有4种状态属性,下面例子中说明:
    View Code
    显示效果:
    8.<c: forTokens> 用于浏览字符串,并根据指定的字符串截取字符串
    语法:<c:forTokens items=“stringOfTokens” delims=“delimiters” [var=“name” begin=“begin” end=“end” step=“len” varStatus=“statusName”]></c:forTokens>
    还是看个例子吧:
    View Code
    ( 1)<c:import> 把其他静态或动态文件包含到 JSP 页面。与jsp:include的区别是后者只能包含同一个web
    应用中的文件,前者可以包含其他web应用中的文件,甚至是网络上的资源。
    语法:<c:import url=“url” [context=“context”] [value=“value”] [scope="…"] [charEncoding=“encoding”]> </c:import>
    <c:import url=“url” varReader=“name” [context=“context”][charEncoding=“encoding”]></c:import>
    看个例子:
    View Code
    显示结果:

    URL路径有个绝对路径和相对路径。相对路径:<c:import url=“a.txt”/>那么,a.txt必须与当前文件放在同一个
    文件目录下。如果以"/“开头,表示存放在应用程序的根目录下,如Tomcat应用程序的根目录文件夹为
    webapps。导入该文件夹下的 b.txt 的编写方式: <c:import url=”/b.txt">。如果要访问webapps管理文件夹中的其他Web应用,就要用context属性。例如访问demoProj下的index.jsp,则:<c:import url="/index.jsp" context="/demoProj"/>.
    (2)<c:redirect> 该标签用来实现请求的重定向。例如,对用户输入的用户名和密码进行验证,不成功则重定向到登录页面。或者实现Web应用不同模块之间的衔接
    语法:<c:redirect url=“url” [context=“context”]/> 或:<c:redirect url=“url” [context=“context”]> <c:param name=“name1” value=“value1”>
    </c:redirect>
    看个例子:
    <% @ page contentType=“text/html;charset=GBK” %>
    1
    <% @ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
    2
    3<c:redirect url=“http://127.0.0.1:8080”>
    4<c:param name=“uname”>lihui</c:param>
    5<c:param name=“password”>11111</c:param>
    6</c:redirect>
    则运行后,页面跳转为:http://127.0.0.1:8080/?uname=lihui&password=11111
    (3)<c:url> 用于动态生成一个 String 类型的URL,可以同上个标签共同使用,也可以使用HTML的标签
    实验超链接。
    语法:<c:url value=“value” [var=“name”] [scope="…"] [context=“context”]>
    <c:param name=“name1” value=“value1”>
    </c:url>
    或:<c:url value=“value” [var=“name”] [scope="…"] [context=“context”]/>
    看个例子:
    View Code
    显示:

    Spring Mvc

    Spring MVC概述:
    Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,框架的目的就是帮助我们简化开发,Spring MVC也是要简化我们日常Web开发的。
    Spring MVC框架搭建

    1. 创建WEB项目,引入Spring MVC依赖Jar包
    2. 创建包结构,创建controller层
    3. 配置web.xml文件
    appServlet org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-context.xml 1 appServlet / encoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encoding /*
    1. 引入Spring MVC配置文件 配置扫描和视图解析器 放在web项目的src下

      <mvc:annotation-driven />

      <context:component-scan base-package=“com.jk” />

      <beans:bean id=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
      <beans:property name=“prefix” value="/user/" />
      <beans:property name=“suffix” value=".jsp" />
      </beans:bean>

    2. 根据注解和web.xml配置请求到Controller即可
      context:component-scan/ 扫描指定的包中的类上的注解,常用的注解有:
      @Controller 声明controller
      @RequestMapping("/menu") 请求映射
      @RequestMapping(value = “”,method = RequestMethod.POST) 标注该方法只能使用Post请求调用
      @RequestParam(“param”) 请求参数
      @PathVariable(“param”)
      Spring MVC 传参方式接收请求参数:

    3. request

    4. 对象 3. String

    5. @RequestParam(“name”)注解

    6. @PathVariable(“param”)注解获取请求动态参数 向页面传值:
      1,使用HttpServletRequest 和 Session 然后setAttribute(),就和Servlet中一样
      2,使用Model/ModelMap对象
      3,使用ModelAndView对象
      4,使用@ModelAttribute注解
      Spring MVC 默认采用的是转发来定位视图,如果要使用重定向:
      return “redirect:show”;
      Spring Web MVC也是服务到工作者模式的实现,但进行可优化。[前端控制器是DispatcherServlet;应用控制器其实拆为处理映射器
      (Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口;二、Spring MVC的优势(简单说两个)?
      1、 简单、容易上手;
      2、 性能优异:jsp+sevlet > struts == SpringMVC > struts2(但是struts2出现了一个不可修复的bug)
      3、 灵活,易于扩展

    2.SpringMVC运行流程

    DispatcherServlet(分发器)

    1. 浏览器发送请求到
    2. 由DispatcherServlet分发器根据注解找到指定的Controller
      1. 5 调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView (6)(7) : DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
        (8) Http响应:视图负责将结果显示到浏览器。
    3. 启动Tomcat,服务器加载web项目 web.xml文件,初始化DispatcherServlet,并加载SpringMVC配置文件
    4. 浏览器发送请求到DispatcherServlet(分发器)
    5. 根据SpringMVC配置文件根据注解(@Controller @requestMapping)找到指定Action和方法
      ModelAndView(模型视图对象)
    6. Controller调用业务逻辑处理后,返回(分发器)
      ViewResoler视图解析器
    7. DispatcherServlet查询,找到ModelAndView指定的视图。
    8. Http响应:视图负责将返回结果显示到浏览器。

    3.SpringMVC接口解释
    (1)DispatcherServlet接口:
    Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
    (2)HandlerMapping接口:
    能够完成客户请求到Controller映射。
    (3)Controller接口:
    Controller将处理用户请求。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
    从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而 ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。(4)ViewResolver接口:
    Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果返回给客户。
    4.DispatcherServlet:是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
    (1) 截获符合特定格式的URL请求。
    (2) 初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
    (3) 初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
    HandlerMapping
    HandlerMapping:处理映射器,为用户发送的请求找到合适的Handler Adapter。
    使用 mvc:annotation-driven 做配置,spring mvc 会默认使用 DefaultAnnoationHandlerMapping 和 AnnotationMethodHandlerAdapter

    <beans:bean class=“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping” />
    <beans:bean
    class=“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter” />
    根据beanname来配置


    根据简单URL 来查找Controller :



    userController



    根据控制类的类名访问controller:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值