[javaweb]jsp,jstl,el表达式的使用
jsp
java server page:java服务器前端页面,和servlet一样,用于动态web开发。
特点:
- 写jsp页面就像在写html
- html只给用户提供静态数据,jsp中可以加入java代码,为用户提供动态数据
jsp最终会被转换成一个java类。jsp继承了一个HttpJspBase,这个类经常间接又继承了servlet,因为jsp的本质还是一个servlet。
但是通过继承使得jsp大大简化了,servlet与前端交互的语句。
- 在jsp中只要是java代码就会原封不动的输出;
·out.print(name);
- 如果是html代码就会进行转换为
out.write("success\r\n");
说到底,就相当于在后台用java语言的servlet给前端传输数据一样只不过它使用了前端化的语言使得操作更加简单,在运行的时候它本身还是转化成了java。
jsp语法
作为一个java语言的应用它支持所有的java语法,并且有许多自己的语法。
也可以用el表达式取值:${}等价于<%=%>
脚本片段:
<%
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
}
out.print("<h1>sum="+sum+"</h1>");
%>
<%! static {
System.out.println("loading^");
}
public void tata(){
System.out.println("sda");
}
%>
jsp指令
错误界面定制:
<%@ page errorPage="success.jsp" %>
包含其他页面:
<%@ include file=""%>
九大内置对象
- session //存值在一个session中
- request //存值在一次请求中
- application //存值在当前项目
- pageContext //存值当前页面
- Response
- config
- jspContext
- out //输出
- page
jsp标签,jstl标签,EL表达式
使用之前要先导包
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
el表达式:${ }
- 获取数据
- 执行运算
- 获取web开发的常用对象
jsp标签
<body>
<jsp:forward page="hello1.jsp">
<jsp:param name="name" value="tata"></jsp:param>
<jsp:param name="age" value="221"></jsp:param>
</jsp:forward>
</body>
jstl标签
弥补html标签的不足,它有许多自定义的标签
导入标签头才能使用该标签
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
在使用标签时遇到此问题
将jar包手动复制到tomcat服务器中
成功
核心标签
使用c开头
<%--
Created by IntelliJ IDEA.
User: 塔塔
Date: 2022/7/20
Time: 10:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="demo1.jsp" method="get">
name<input type="text" name="username" value="${param.username}">
<input type="submit" value="submit">
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="admin you are wercome"></c:out>
</c:if>
</form>
</body>
</html>
javaBean
- 必须有一个无参构造
- 属性私有
- 有对应的get、set
一般和数据库的表映射:字段映射属性!
表people
id | name | age |
---|---|---|
1 | tata | 18 |
2 | meigu | 17 |
@Data
public class people{
private int id;
private String name;
private int age;
}
三层架构
model view controller
视图,模型,控制器
早期历史
- servlet可以直接编辑crud,访问数据库,程序十分臃肿,不利于维护。
model:
- 业务处理:业务逻辑(server)
- 数据持久层:crud(dao)
view:
- 展示数据
- 提供连接发起servlet请求
controller:
-
接受用户请求:(req:请求参数,session信息)
-
交给业务层处理对应的代码
-
控制视图的跳转