属性值是一个对象。
有关属性存储的方法有4个,定义在HttpServletRequest接口中。
格式如下。
public void setAttribute(String name,Object obj)
public Object getAttribute(String name)
要类型转换
public void removeAttribute(String name)
public Enumeration getAttributeNames()
-
文本、单选按钮,使用
String data = request.getParameter(String name)
-
复选框、多选框,使用
String[] data = request.getParameterValues(name)
- 请求转发
request.getRequestDispatcher().forward(request,response)
不能转向到本web应用之外的页面和网站,所以转向的速度要快。
- 响应重定向
通过响应对象response的sendRedirect()实现,public void sendRedirect(String location)
。
注:URL可以是绝对URL(如https://www.baidu.com),也可以是相对URL。
- 一个猜数字的小栗子
package com.jsy.learn;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
// URL为:http://localhost:8080/learnServletAndJSP_war_exploded/GuessNumberServlet 执行
@WebServlet(“/GuessNumberServlet”)
public class GuessNumberServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
int magic = (int)(Math.random()*101);
HttpSession session = request.getSession();
// 浏览器第一次访问,服务器就产生一个 session 会话,产生一个随机数存在session里。
session.setAttribute(“num”,new Integer(magic));
response.setContentType(“text/html;charset=utf-8”);
PrintWriter out = response.getWriter();
// 输出 表单
out.println(“”);
out.println(“guess a number between 0 and 100”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
}
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// 表单通过 post函数传来值
int guess = Integer.parseInt(request.getParameter(“guess”));
// 这里通过 request 获得的session 就是 一开始上面存在服务器的session
HttpSession session = request.getSession();
// 获取一开始设定的值
int magic = (Integer)session.getAttribute(“num”);
response.setContentType(“text/html;charset=utf-8”);
PrintWriter out = response.getWriter();
out.println(“”);
// 写判断逻辑
if(guess==magic){
// 会话失效,当然之前一开始设置的值也就失效了
session.invalidate();
out.println(“ok!”);
out.println(“again?.”);
}
else if(guess>magic){
out.println(“It’s too big!”);
}
else{
out.println(“It’s too small!”);
}
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
}
}
===================================================================
- JSP(JavaServer Pages)是一种在HTML页面中嵌入JSP元素的动态Web页面 ,它的主要用来实现表示逻辑。
在JSP页面中可以包含多种JSP元素,当JSP页面被访问时,Web容器将JSP页面转换成Servlet类执行后将结果发送给客户。
- JSP文件会被转换和编译成Servlet程序。
与其他的Web页面一样,JSP页面也有一个唯一的URL,客户可以通过它访问该页面。
在JSP页面中可以使用三种脚本元素:
-
JSP声明、
-
JSP小脚本、
-
JSP表达式。
-
变量(类的成员变量、)、方法(类的成员方法)的声明
<%! %>
- 表达式,插值
<%= %>
- 指令
<%@ %>
如:
<%-- 导包 --%>
<%@ page import=“java.time.LocalDate” %>
<%@ include attribute-list %>
在JSP 编译时插入一个包含文本或代码的文件,这个包含的过程是静态的,
- 脚本(service的中的方法代码段)
<% %>
当JSP页面第一次被访问时,Web容器解析JSP文件并将其转换成相应的Java文件,该文件声明了一个Servlet类,该类称为页面实现类。
客户首次访问页面时,Web容器执行该JSP页面要经过6个阶段。
-
前三个阶段将JSP页面转换成一个Servlet类并装载和创建该类实例;
-
后三个阶段是初始化、提供服务和销毁阶段。
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%-- 导包 --%>
<%@ page import=“java.time.LocalDate” %>
<%! LocalDate curDate = null;%>
<% curDate = LocalDate.now(); %>
今天的日期是:<%= curDate.toString() %>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%-- 变量声明的顺序无关紧要,因为都会转换为实现类的成员变量和成员方法 --%>
<%!
double r;
double getArea(double r) {
return Math.PI * r * r;
}
%>
<%
out.println(“欢迎”);
%>
<%
String s = request.getParameter(“radius”);
if (s == null) s = “0”;
r = Double.parseDouble(s);
%>
半径为<%= r %>的圆的面积为:<%= getArea®%>
- JSP的循环
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%
for(int i=1;i<10;i++){
%>
<%= i%> <%= Math.sqrt(i)%><%
}
%>
out
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。
可以在小脚本中直接使用它,也可以在表达式中间接使用它产生HTML代码。
out.print();
out.println();
out.write();
request
该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等。
分析用户请求。
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
请求URI为 <%= request.getRequestURI() %>
请求全路径 <%= request.getRequestURL() %>
请求方法为 <%= request.getMethod() %>
协议为 <%= request.getProtocol() %>>
- 根据 URL传递参数
注意两种方式的不同。
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!
学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-SdXD6nR6-1713605911607)]
[外链图片转存中…(img-EC3XPf44-1713605911607)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-BDC53UnQ-1713605911607)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
[外链图片转存中…(img-51Q1KPHC-1713605911608)]
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!
[外链图片转存中…(img-zt4ciu9e-1713605911608)]
[外链图片转存中…(img-6UGcw4jH-1713605911609)]