JavaWeb-JSP+javaBean

JSP

Java Server pages

java服务器端页面,和Servlet一样,开发动态web

jsp可以嵌入Java代码,为用户提供动态数据,最终转化为一个java类。

原理

Jsp写的HTML代码–转化为Servlet输出 – --> out.write("\n")

jsp本质上是一个Servlet。

HttpJspBase extends HttpServlet implements HttpJspPage

浏览器向服务器发送请求,不管访问什么资源,其实都是访问Servlet!

public void _jspinit(){} // 创建初始化
public void _jspDestroy(){} // 销毁
public void _jspService(HttpServletRequset requset, HttpServletResponse response){
    // 判断请求
    // 内置对象
}

内置对象:

  • PageContext pageContext // 页面上下文
  • Httpsession session
  • ServletContext application // applicationContext
  • ServletConfig config
  • JspWriter out
  • Object page
  • JspWriter _jspx_out
  • PageContext _jspx_page_context

作用域:

  • sessionScope sessionScope.get()
  • pageScope
  • requestScope
  • applicationScope

jsp的规则

<html>  <!--对应java为 out.write("<html>\r\n")-->
${ <!--对象--> }  <!--EL表达式-->
<% //java代码 %> 
<% =//变量或者表达式 %>  
<% =name %>  <!--对应java为 out.print(name)-->
<%-- 注释 --%>

在这里插入图片描述

JSP基础

导入依赖:Sevlet依赖,JSP依赖,JSTL表达式依赖,standard标签库。

注意:这里选择war exploded后面可以实现热部署

语法

可以嵌套代码

<% 
	for (int i=0; i<5; i++){
%>
	<h1> Hello <%=i%> </h1>
	<h1> Hello ${i} </h1>
<% }// 输出5个hello i,因为jsp在源码里面将HTML转化为
// out.write("<h1> Hello");
// out.print(i);
// out.write("</h1>\n");
%>

<!--JSP声明-->
<%!
	static{xx}
	private int a = 0;
	public void a(){}
%>

JSP声明:会被编译到jsp生成的Java类中,其他的就会被生成到——jspService方法中

<!--导包-->
<%@ page import="java.util.*"%>
<!--定制错误页面-->
<%@ page errorPage="error/500.jsp" %>
<!--web.xml厘米定制错误页面-->
<error-page>
	<error-code>500</error-code>
    <location>error/500.jsp</location>
    <!--error/500.jsp-->
</error-page>
<!--固定头部,jsp:include,拼接页面,本质是一个-->
<jsp:include page = "/common/xx.jsp">
<jsp:include page = "/common/xxs.jsp">    

9大内置对象

pagecontext,request,response,session,application,config,out,page,exception

session域和application域可以跨页面

request也可以跨页面,只是一定要通过请求转发[pageContext.forward(“xxx.jsp”)]

从pageContext取出,从底层到高层(作用域)寻找,page->request->session->application,没有找到就错误。(责任链)

(双亲委派机制:自定义的类不能和jar库的类重名,从底层开始找,无论找到没找到都向上找,就算找到了,也会被上层替代)

  • pageContext:保存的数据只在一个页面中有效
  • request:**保存的数据只在一次请求中有效。**客户端向服务器发送请求,产生数据,用户看完就没用了,新闻
  • session:保存的数据只在一次会话中有效。客户端向服务器发送请求,产生数据,用户用完还可以用,购物车
  • application:保存的数据只在一次服务器中有效。客户端向服务器发送请求,产生数据,一个用户用完了,其他用户也可以使用,共享数据,也就是ServletContext ,聊天数据

JSP标签

EL表达式:${} :获取常用的web对象数据

获取表单中的数据:${param.参数名}

请求转发:使用jsp标签的形式

<jsp:forward page = "/common/xxs.jsp">
    <!--请求转发所携带的参数-->
    <jsp:param name="xx" value=12></jsp:param>
</jsp:forward>

取出参数

<%=request.getParameter("name")%>

JSTL表达式

标签库,自定义标签,标签的功能和java代码一样

注意:Tomcat可能要导包

  • 核心标签
  • 格式化标签 prefix=“fmt”
  • SQL标签 prefix=“sql”
  • XML标签 prefix=“x”
<!--引入JSTL核心标签库,才能使用JSTL标签-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${param.username=='admin'}" var="isAdmin">
	<c:out value="xxx"/>
</c:if>
<!--保存数据-->
<c:set var="score" value="xx">
</c:set>
<!--switch-->
<c:chose>
    <c:when test="${score<=60}">
        xxxx
    </c:when>
</c:chose>
<!--foreach遍历-->
<% request.setAttribute("list",xx);// xx Array数组对象 %>
<c:forEach var="xx" item="${list}"></c:forEach>
<!--for遍历-->
<c:forEach var="xx" item="${list}" begin="1" end="3"  step="1" ></c:forEach>

javaBean

JavaBean 是一种JAVA语言写成的可重用组件。JavaBean符合一定规范编写的Java类,不是一种技术,而是一种规范。所有属性为private。

实体类,POJO(Plain Ordinary Java Object)

  • 必须有一个无参构造函数
  • 属性必须私有化
  • 必须有对应的get/set方法

一般用来和数据库的字段做映射:ORM

JavaBean是对应了数据库的一张表

区别

POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。

POJO主要用于数据的临时传递,它只能装载数据, 作为数据存储的载体,而不具有业务逻辑处理的能力。

JavaBean虽然数据的获取与POJO一样,但是javabean当中可以有其它的方法。

ORM:对象关系映射,表->类,字段->属性,行记录->对象

实体类一般与数据库的表结构一一对应

小知识

@TableField("")自动转驼峰

lombook一句话 @Data

<jsp:userBean id="people" class="com.xx.People" scope="page"/>
<!--等价于People people = new People();-->
<!--property 属性-->
<jsp:setProperty name="people" property="id" value= "xx"/>
<!--等价于people.setId();-->
xx:<jsp:getProperty name="people" property="id"/>
<!--等价于people.getId();-->

以上可以在spring ioc里配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值