javaee背景
-
克服传统Client/Server架构的弊端
-
迎合Browser/Serexer架构的潮流
-
应用领域为中大型企业软件 中大型网站
B/S
- 部署企业应用或者网站 (联网)
Web服务器之Tomcat
WEB服务器简单的来说就是网站服务器 它的作用就是向浏览器等Web客户端提供文档 放置网站文件 让访问网络的用户都可以进行访问 也可以放置文档让用户下载
主流服务器
- IIS ,Nginx,Tomcat
web项目概况
一个wed项目由serlet jsp页面及
- JSP(全称JavaServer Pages)是由Sun公司倡导研发的一种,动态生成HTML页面的一种网页技术。
- 简单来说,JSP是JAVA与HTML的结合体
- 可以运行在任何系统之上,无需改动代码
- 在web开发过程中担任显示层的角色
- . JSP中的语法成份:
- HTML
- 注释
- 声明
- 脚本
- 表达式·
- 指令
- 动作
- 1、使用HTML注释
-
格式:
-
右击页面-》查看源代
-
.在客户端能看到注释内容码
-
. 使用JSP注释
- 格式:<%--注释语句--%>
- 在客户端看不到注释内容
嵌入JAVA代码
使用声明方式在HTML页面中嵌入JAVA代码
1)用于定义方法、成员变量
2)格式: <%! JAVA代码 %>
<%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/3/31
Time: 15:28
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<% %>局部变量
<%-- <%=%>输出变量的值 --%>
<%String name="陈叔钰";
System.out.println(name);
%>
<%=name%>
</body>
</html>
JSP的page指令
·1、作用: page指令用于设定JSP页面的属性与功能·2、语法:<%@page设置属性%>
. 3、属性:
. 1) language="java"
指定嵌入的语言
. 2) import= "iava.util.*"
导包
. 3) contentType="text/html ;charset=UTF-8"设置编码
jsp的java方法
使用声明方式在HTML页面中嵌入JAVA代码. 1)用于定义方法、成员变量
格式:<%!JAVA代码%>→
<%!
public String str = "声明元素";
声明:
public void show(){
定义成员变量
System.out.println(str);
声明方法
%>
<%@ page import="fhc.Xues" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
<%
Xues xues = new Xues();
Xues xues1 = new Xues();
Xues xues2 = new Xues();
xues.setAge(12);
xues.setName("学1生");
xues1.setAge(122);
xues1.setName("学2生");
xues2.setAge(123);
xues2.setName("学3生");
ArrayList<Xues> S = new ArrayList<>();
S.add(xues);
S.add(xues1);
S.add(xues2);
%>
<table>
<tr><td>姓名</td>
<td>年龄</td></tr>
<%
for (Xues xues3:S){
%>
<td><%=xues3.getName()%></td>
<td><%=xues3.getAge()%></td>
<%}%>
</table>
</body>
</html>
Servlet概述
- Servlet是一种服务器端的Java应用程序
- Servlet接收浏览器发送的请求,然后将处理生成的结果应答给空户湍(处理客户端请求)
- 在web开发过程中一般担任控制层的角色
init.方法:初始化方法,只执行一次
service方法,每次发送请求,都被调用
destroy方法:销毁方法,只执行1次
Servlet的执行原理:执行原理:
1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
http://localhost:8080/demo0425 servlet war exploded/Servlet01
2分析路径,根据路径找到 servlet的类,从而找到servlet类的字节码文件3. tomcat会将字节码文件加载进内存,并且创建其对象
4.调用其方法
servlet这个对象是Tomca创建的
默认情况下,第一次被访问时, servlet被创建可以配置执行servlet的创建时机。
*在
1.第一次被访问时,创建
本<load -on-startup>的值为负数,默认2.在服务器启动时,创建
的值为0或正整数(在web.xml中配置文件)老.cLIahconi.1o+i 一1.
设置servlet的路径:有2种方法:
1〕通过注解配置
2)通过web.xml文件
Servlet中的生命周期方法:
1.被创建:执行init方法,只执行一次
Servlet什么时候被创建?
默认情况下,第一次被访问时,servlet被创建*
可以配置执行Servlet的创建时机。
在
1.第一次被访问时,创建
方
2.在服务器启动时,创建
*解决:尽量不要在servlet中定义成员变量。即使定义了成员变量,也不要对修改值
servlet的init方法,只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的
配置文件
<?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>Servlet1</servlet-name><!-- servlet的类名-->
<servlet-class>cn.sdxh.web.servelt.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/ss.d</url-pattern><!-- servlet的路径-->
</servlet-mapping>
</web-app>
servlet类1
package cn.sdxh.web.servelt;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/Servlet1")
public class Servlet1 extends HttpServlet {
@Override//处理get
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("asda");//网页
System.out.println("1231");//控制台
}
@Override//处理Post
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
servlet类2
package cn.sdxh.web.servelt;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/Servlet02")
public class Servlet02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("a1sda");//网页
System.out.println("12131");//控制台
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
网页代码
<%@ page import="fhc.Xues" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="hello-servlet">Hello Servlet</a>
<%
Xues xues = new Xues();
Xues xues1 = new Xues();
Xues xues2 = new Xues();
xues.setAge(12);
xues.setName("学1生");
xues1.setAge(122);
xues1.setName("学2生");
xues2.setAge(123);
xues2.setName("学3生");
ArrayList<Xues> S = new ArrayList<>();
S.add(xues);
S.add(xues1);
S.add(xues2);
%>
<table>
<tr><td>姓名</td>
<td>年龄</td></tr>
<%
for (Xues xues3:S){
%>
<td><%=xues3.getName()%></td>
<td><%=xues3.getAge()%></td>
<%}%>
</table>
</body>
</html>
网址localhost:8080/demo2_war_exploded/ss.d
网页显示 asda 控制台显示 1231
HttpServletResponse概述
服务器向客户端浏览器返回的应答信息被封装成为一个HttpServletResponse对象
常用方法
返回值方法名参数 | 说明 |
---|---|
void setCharacterEncoding(String env) | 将编码设置为env指定的格式 |
void setContentType(String type) | 设置返回类型 |
PrintWriter getWriter() | 获取向浏览器输出数据的流 |
void sendRedirect(String location) | 跳转到location指定的位置 |
String encodeURL(String url) | 对URL进行重新编码 |
中文编码问题
servlet类
先设置完编码,再输出
package cn.sdxh.web.servelt;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/Servlet02")
public class Servlet02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8"
);//第一行 设置编码
response.getWriter().write("a1sda");//网页
System.out.println("12131");//控制台
PrintWriter getWriter = response.getWriter();
getWriter.write("陈淑钰超级无敌帅 天下第一帅 吴彦祖");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
网址localhost:8080/demo2_war_exploded/Servlet02
Jsp和Servle
相同性:
- 都必须运行在服务器中
- 都可以通过Java+HTML动态生成html页面
JSP原理
- 每个JSP 页面在第一次被访问时,会被翻译成一个Servlet源程序(java文件),接着再把这个Servlet源程序编译成相应的class类文件
- WEB容器会像调用普通Servlet程序一样,来装载和解释执行这个由JSP页面翻译成的Servlet程序
不同性:
- jsp中更容易编写HTML代码,不易于编写相关JAVA代码。4
- servlet更侧重于java代码的编写,不易于编写HTML代码
结论
结论:
为了保证代码的整洁性和可维护性,根据他们各自的优势做了以下区分:
- JSP负责页面展示
- Servlet负责数据业务处理
jsp超链接调用servlet类
相对路径
<%--相对路径 Servlet1--%>
<a href="Servlet1">Hel</a>
绝对路径
<a href="/demo4_war_exploded/Servlet1">Hel</a>
在Jsp中编写表单
客户端浏览器发出的请求被封装成为一个HttpServletRequest对象
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<a href="Servlet1">Hel</a>、
<form action="Servlet1" method="get">
用户<input type="text" name="1"/><br>
密码<input type="password" name="2"/><br>
<input type="submit" value="登录">
</form>
</body>
</html>
servlet类1
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/Servlet1")
public class Servlet1 extends HttpServlet {
@Override//处理get
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("asda");//网页
System.out.println("1231");//控制台
String NAME=request.getParameter("1");
String MIMA=request.getParameter("2");
System.out.println("用户名"+NAME);
System.out.println("密码"+MIMA);
}
@Override//处理Post
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
常用方法的使用
获得web应用程序在浏览器中发布的目录名
servlet类
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/Servlet1")
public class Servlet1 extends HttpServlet {
@Override//处理get
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().write("asda");//网页
System.out.println("1231");//控制台
String pa=request.getContextPath();//发布的目录名字
System.out.println(pa);//发布的目录名字
}
@Override//处理Post
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
处理中文乱码
response.setContentType( "text/html; charset=UTF-8"");//处理响应中的中文乱码
request.setcharacterEncoding("UTF-8");//处理请求中的中文乱码
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/Servlet1")
public class Servlet1 extends HttpServlet {
@Override//处理get
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");//处理响应中中文
request.setCharacterEncoding("utf-8");//处理请求中的代码
}
@Override//处理Post
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
处理Post月Get中文乱码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter(" password ");
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter(" username ");
System.out.prinlnt(username);
// 乱码
// 处理乱码
username = new String(username.getBytes("ISO8859-1"),"UTF-8")
}
/requet:请求对象'
/response:响应对象
修改其他人的项目服务器
+:添加
-:移除
Get与Post
表单和超级链接请求均默认为Get
表单可以设置提交方式为Post
Get
- Get是向服务器提交数据的一种方式
- Get方式提交会请求到servlet中doGet方法
- Get请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,如:servlet/LoginServlet?username=“admin”&password=“123”
- Get显式提交 不安全
- Get方式提交的数据最多只能是1024字节
Post
-
Post提交方式会请求到servlet中doPost中
-
Post提交:把提交的数据放置在是HTTP包的包体中。
-
Post隐式提交 安全
-
数据大小理论上POST没有限制,可传较大量的数据
-
Post安全
后台传递到前台(Servlet向jsp传递数据)
- 将要传递的数据放入request对象中
- 使用请求转发将数据传递到指定的页面上
- 页面接收request传递过来的数据并展示
HttpServletRequest方法
返回值/方法名/参数 | 说明 |
---|---|
void setCharacterEncoding(String env) | 将编码设置为env指定的格式 |
String getParameter(String name) | 获取请求中的由name指定的参数值 |
void setAttribute(String name, Object o) | 在这个请求中存储属性。 |
void removeAttribute(String name) | 删除name指定的属性值 |
Object getAttribute(String name) | 返回name指定的属性值 |
String getContextPath() | 项目的相对路径 |
void setAttribute(String name, Object o) 在request中保存对象的值
Object getAttribute(String name) 从request对象中取值,根据键来取值
返回值方法名参数 | 说明 |
---|---|
RequestDispatcher getRequestDispatcher(String path) | 获取指定path路径的转发对象 |
HttpSession getSession() | 返回与这个请求关联的当前的有效的session会话 |
String getRequestURI() | 返回的是请求的全部,包括Http协议,端口号,servlet名字和映射路径 |
RequestDispatcher getRequestDispatcher(String path) 获得转发器
网页的登录
输入用户名和密码,验证用户名和密码是否正确,如果合法,则跳转到欢迎页面,并显示欢迎你,XXX
html
登录
难点 三目运算符 判断后台传输的数据是不是空 是空 就打印空的字符串 不是空 就打印出得到的字符
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<br/>
<%--相对路径 Servlet1--%>
<a href="Servlet1">Hel</a>
<%--绝对路径 <form action="/demo4_war_exploded/Servlet1" method="get">
--%>
<%--equest.getContextPath()项目的根目录--%>
<form action="<%=request.getContextPath()%>/Servlet1" method="get">
用户<input type="text" name="a"/><br>
密码<input type="password" name="b"/><br>
<input type="submit" value="登录">
</form>
<div style="outline-width: thin">
<%=
request.getAttribute("msg")==null?"":request.getAttribute("msg")
%>>
</div>
</body>
</html>
欢迎
<%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/6
Time: 16:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎
<h3>你的名字<%= request.getAttribute("se")%></h3>
<h3>你的密码<%= request.getAttribute("s")%></h3>
</body>
</html>
Servlet1
if判断前台 输入的账户密码是否合法 合法把账户密码就输出到欢迎
不合法就输出把"用户名密码不合法"到 登录页面
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/Servlet1")
public class Servlet1 extends HttpServlet {
@Override//处理get
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");//处理响应中中文
request.setCharacterEncoding("utf-8");//处理请求中的代码
/* response.getWriter().write("asda");//网页
System.out.println("1231");//控制台*/
String NAME=request.getParameter("a");
String MIMA=request.getParameter("b");
System.out.println("用户名"+NAME);
System.out.println("密码"+MIMA);
request.setAttribute("se",NAME);
request.setAttribute("s",MIMA);
if (NAME.equals("123")&&MIMA.equals(123)){
request.getRequestDispatcher("欢迎.jsp").forward(request,response);
}else {
request.setAttribute("msg" ,"用户名密码不合法");
request.getRequestDispatcher("index.jsp").forward(request,response);
}
}
@Override//处理Post
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
输出对象与列表
输出对象
html
<%@ page import="网站.xs" %><%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/7
Time: 16:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="<%=request.getContextPath()%>/Servlet02">cg</a>
<%
xs a=(xs)request.getAttribute("d");
%>
<h1>显示对象</h1>
<%=a.getId()%></br>
<%=a.getName()%>
</br><%=a.get年龄()%></br>
${d.name}
${d.年龄}
${d.id}
</body>
</html>
Servletall
import 网站.xs;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet02", value = "/Servlet02")
public class Servlet02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");//处理响应中中文
request.setCharacterEncoding("utf-8");//处理请求中的代码
xs 学生 = new xs();
学生.setId(1);
学生.setName("陈淑钰");
学生.set年龄(17);
request.setAttribute("d",学生);
request.getRequestDispatcher("对象.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
对象
package 网站;
public class xs {
private String name;
private int 年龄;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int get年龄() {
return 年龄;
}
public void set年龄(int 年龄) {
this.年龄 = 年龄;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
输出列表
html
<%@ page import="网站.Account" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/8
Time: 15:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//根据request域中键名来取值
List<Account> accountList= (List<Account>) request.getAttribute("list");
%>
<h1>显示集合</h1>
<table width="500" border="1">
<tr>
<td>编号</td><td>姓名</td><td>存款</td>
</tr>
<%
for(Account ac:accountList) {
%>
<tr>
<td><%=ac.getId()%></td><td><%=ac.getName()%></td><td><%=ac.getMoney()%></td>
</tr>
<%
}
%>
</body>
</html>
Servletall
import 网站.Account;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "accountAllServletall", value = "/accountAl1lServletall")
public class accountAllServletall extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("utf-8");
//2.模拟从数据库中查询所有账户
Account account1=new Account();
account1.setId(1);
account1.setName("苏子然");
account1.setMoney(10000);
Account account2=new Account();
account2.setId(2);
account2.setName("陈淑玉");
account2.setMoney(10000000);
Account account3=new Account();
account3.setId(2);
account3.setName("徐文焕");
account3.setMoney(20000);
List<Account> accountList=new ArrayList<Account>(); //创建一个集合
accountList.add(account1);
accountList.add(account2);
accountList.add(account3);
//在request对象中保存一个集合
request.setAttribute("list",accountList);
//转发到另外一个页面
request.getRequestDispatcher("account.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
对象
package 网站;
public class xs {
private String name;
private int 年龄;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int get年龄() {
return 年龄;
}
public void set年龄(int 年龄) {
this.年龄 = 年龄;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
总页面
<%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/8
Time: 15:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="<%=request.getContextPath()%>/Servlet02">查询账户</a><br/>
<a href="<%=request.getContextPath()%>/accountAl1lServletall">查询账户1</a><br/>
</body>
</html>
el.和 jstl.表达式
EL:
简化 ip页面中java代码语法:${表达式}
${键名}:取request对象中存放的值
使用﹒访问对象的属性
对象
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int get年龄() {
return 年龄;
}
public void set年龄(int 年龄) {
this.年龄 = 年龄;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Servletall
import 网站.xs;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "Servlet02", value = "/Servlet02")
public class Servlet02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");//处理响应中中文
request.setCharacterEncoding("utf-8");//处理请求中的代码
xs 学生 = new xs();
学生.setId(1);
学生.setName("陈淑钰");
学生.set年龄(17);
request.setAttribute("d",学生);
request.getRequestDispatcher("对象.jsp").forward(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
html
<%@ page import="网站.xs" %><%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/7
Time: 16:25
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="<%=request.getContextPath()%>/Servlet02">cg</a>
<%
xs a=(xs)request.getAttribute("d");
%>
<h1>显示对象</h1>
${d.name}
${d.年龄}
${d.id}
</body>
</html>
JSTL:标签库
代替java中if语句代替java中 for语句
. 1、<c:if>标签用于实现if到断的功能
. 2、
条件为真时执行的代码
</c:if>
相当于if(){
}
- 相当于java中if elseif else结构
<c:cho9se>
<c:when test=""></c:when><c:otherwise.>kc:otherwise>
<%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/13
Time: 9:47
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>
<%
pageContext.setAttribute("i",11);
%>
<c:if test="${i%2==0}">
${i}我是傻逼
</c:if><c:if test="${i%2!=0}">
${i}我是智障
</c:if>
</body>
</html>
JSP的taglib指令
- 作用: taglib指令向JSP页面中导入新的标签
- .语法:<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
- 、属性:
- uri =http://java.sun.com/jsp/jstl/core指定要导入标签库的位置
- prefix= “c"用于区分导入的标签库
Jstl标签库如何来用,
-
导包WEB-INFVib
-
引入标签库<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
)使用
-
<c;forEach>相当于for循环<c:forEach var=“变量” items="要遍历的集合/数组" varStatus,=“状态变”${(变量}</ c:forEach>
<%@ page import="网站.Account" %>
<%@ page import="java.util.List" %><%--
Created by IntelliJ IDEA.
User: g15
Date: 2022/4/8
Time: 15:24
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>
<%--<%--%>
<%-- //根据request域中键名来取值--%>
<%-- List<Account> accountList= (List<Account>) request.getAttribute("list");--%>
<%--%>--%>
<h1>显示集合</h1>
<table width="500" border="1">
<tr>
<td>编号</td><td>姓名</td><td>存款</td>
</tr>
<c:forEach items="${list}" var="ad">
<tr> <td>${ad.id}</td><td>${ad.name}</td><td>${ad.money}</td></tr>
</c:forEach>
<c:forEach items="${list}" var="a">
<li>${a.id} ${a.money}</li>
</c:forEach>
</body>
</html>
jsp.的九大内置对象
对象类型 | 对象名称 |
---|---|
javax.servlet.ServletContext | application |
javax.servlet.http.HttpServletRequest | request |
javax.servlet.http.HttpSession | session |
javax.servlet.jsp.PageContext | pageContext |
javax.servlet.http.HttpServletResponse | response |
javax.servlet.jsp.JspWriter | out |
java.lang.Object | page |
java.lang.Throwable | exception |
javax.servlet.ServletConfig | config |
request: 请求对象,用于jsp向servlet,或者servlet向jsp传递数据。
response: 响应对象,用于跳转页面,设置servlet返回数据类型等。
out: 输出对象,在java代码中通过这个对象输出信息到页面
session: 浏览器会话对象,服务器会为每一个用户创建一个session对象 适用于保存用户登录信息,用户与浏览器对话。
application: 服务器对象,所有用户共用一个服务器对象,服务器关闭后失效 适合用于存储公共数据,禁止乱用!非常占据服务器内存;
pageContext: 可以通过它获得上面所有对象。
config: 对象的主要作用是取得服务器的配置信息。
page: 对象代表JSP本身,页面级对象。
exception: 捕获页面异常对象。
一、request请求对象:
- 1.作用:请求对象,获取客户端浏览器向服务器发送的请求用于jsp向servlet传值或者servlet向jsp,传值
- 常用方法:
- reguest.getParamter“参数名"):获取参数的值
- reguest.setcharacterEncoding(“编码”):设置请求的编码
- reguest-getDispatcher(“页面的路径"):获取转发器
- reguest.ietAttribute(“键”,值):保存键值对
- reguest.getAttribute(“键”):根据键获取值,相当于$"键名”
二.response:响应对象
,用于跳转页面,设置servlet返回数据类型等。
- 常用方法:
response.setContentlvpe("text/html:charset=UTF-8"):设置响应的编码
response.getWriter()