-
什么是jsp
为了解决动态生成html文档的技术
代替servlet程序回传html页面的数据,使成本降低
work catalina localhost
- jsp头部的page指令
1)<%–声明脚本格式–%>
<%! private String name;
static {
System.out.println(“这是一个静态代码块”);
}
%>
2)<%–声明脚本格式–%>
<%! private String name=“张三”;
static {
System.out.println(“这是一个静态代码块”);
}
%>
<%–<%=表达式%>输出脚本–%>
<%=88888%>
<%=“abcdef”%>
<%=name%>
3)<%–代码脚本 <%java语句%>–%>
<% for (int i=1;i<10;i++){
System.out.println(i);
}
%> - jsp的四大域对象
pageContext 只在jsp当前页面有效
request 在一次请求范围之内能够渠道
aession 浏览器开启到浏览器关闭 在浏览器开启的时候,aession就开启,
application 适用于整个servlet工程
<% //一次请求范围内有效
request.setAttribute(“request”,“request”);
//当前jsp页面有效
pageContext.setAttribute(“pageContext”,“pageContext”);
//一次会话,浏览器开启到关闭
session.setAttribute(“session”,“session”);
//适用于整个web项目
application.setAttribute(“application”," application");
%>
<%=request.getAttribute(“request”)%>
<%=pageContext.getAttribute(“pageContext”)%>
<%=session.getAttribute(“session”)%>
<%=application.getAttribute(“application”)%>
- jsp的常用标签
1)静态包含
<%–静态导入–%>
<%@include file=“c.jsp”%>
2)动态包含
3)请求转发
//请求转发,地址不会改变
方法1
request.getRequestDispatcher("/jsp/c.jsp").forward(request,response);
方法2
<jsp:forward page="/jsp/c.jsp "></jsp:forward>
a.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%--静态导入--%>
<%@include file="c.jsp"%>
<%--声明脚本格式--%>
<%! private String name="张三";
static {
System.out.println("这是一个静态代码块");
}
%>
<%--<%=表达式%>--%>
<%=88888%>
<%="abcdef"%>
<%=name%>
<%--代码脚本 <%java语句%>--%>
<% for (int i=1;i<10;i++){
System.out.println(i);
}
//请求转发,地址不会改变
request.getRequestDispatcher("/jsp/c.jsp").forward(request,response);
%>
<jsp:forward page="/jsp/c.jsp "></jsp:forward>
<body>
</body>
</html>
b.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<% //一次请求范围内有效
request.setAttribute("request","request");
//当前jsp页面有效
pageContext.setAttribute("pageContext","pageContext");
//一次会话,浏览器开启到关闭
session.setAttribute("session","session");
//适用于整个web项目
application.setAttribute("application"," application");
%>
<%=request.getAttribute("request")%><br>
<%=pageContext.getAttribute("pageContext")%><br>
<%=session.getAttribute("session")%><br>
<%=application.getAttribute("application")%><br>
<body>
</body>
</html>
c.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%=request.getAttribute("request")%><br>
<%=pageContext.getAttribute("pageContext")%><br>
<%=session.getAttribute("session")%><br>
<%=application.getAttribute("application")%><br>
<body>
我是c.jsp
</body>
</html>
d.jsp
<%@ page import="com.bky.dto.User" %>
<%@ page import="java.util.ArrayList" %><%--
Created by IntelliJ IDEA.
User: admin
Date: 2020/7/31
Time: 10:36
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<%
// User user=(User)request.getAttribute("user");
ArrayList<User> users = (ArrayList<User>) request.getAttribute("users");
%>
<body>
<h1> 欢迎来到***界面</h1>
<table border="1px">
<tr>
<th>姓名</th>
<th>性别</th>
<th>地址</th>
<th>修改</th>
</tr>
<% for (User us:users) {
%>
<tr>
<td><%=us.getUname()%></td>
<td><%=us.getSex()%></td>
<td><%=us.getAddress()%></td>
<td> <a href="#">删除</a> <a href="#">修改</a> </td>
<% }
%>
</tr>
</table>
</body>
</html>
User .java
package com.bky.dto;
public class User {
private String uname;
private String sex;
private String address;
public User(String uname, String sex, String address) {
this.uname = uname;
this.sex = sex;
this.address = address;
}
public User(){
}
@Override
public String toString() {
return "User{" +
"uname='" + uname + '\'' +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
ServletDemo01 .java
package com.bky.servlet;
import com.bky.dto.User;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
public class ServletDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建一个集合
ArrayList<User> users = new ArrayList<>();
for(int i=1;i<10;i++) {
//封装数据
User user = new User();
user.setUname("张三");
user.setSex("男");
user.setAddress("北京市");
users.add(user);
}
//把数据存放到作用域
req.setAttribute("users",users);
//获取转发对象并且设置地址
RequestDispatcher requestDispatcher = req.getRequestDispatcher("/jsp/test.jsp");
//走向具体的类
requestDispatcher.forward(req,resp);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>ServletDemo01</servlet-name>
<servlet-class>com.bky.servlet.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo01</servlet-name>
<url-pattern>/ServletDemo01</url-pattern>
</servlet-mapping>
</web-app>
结果
注意:
尽量使用作用域范围小的作用域对象,以减少内存