EL
用于在jsp页面获取servlet传的值
使用方式
1.在头文件里开启不忽略el表达式
<!-- jsp头文件 isELIgnored="false"这里是不忽视el语法 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
2.使用${name}方式来获取传来的值
实例
servlet页面
@WebServlet("/searchGoodsList")
public class searchGoodsListServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
req.setAttribute("goods", "牛奶");
req.getRequestDispatcher("/searchList.jsp").forward(req, resp);
}
}
前端页面(可以是jsp或者html)
<!-- 通过key获取对应值 -->
<span>${goods}</span>
jstl
用于在jsp页面上处理数据
使用方式
1.导入架包
<!--jstl-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.jsp文件写上头文件
// 核心标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
// 格式库
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
使用实例
<!-- jsp头文件 isELIgnored="false"这里是不忽视el语法 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%-- 核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- 格式库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<meta charset="UTF-8">
<title>珍珠项链 1号店</title>
</head>
<body>
<div class="list_c">
<ul class="cate_list">
<!-- jstly语法,遍历${goods},${goods}这里是el获得的值,good是每次取出的对象 -->
<c:forEach items="${goods}" var="good">
<li>
<div class="img"><a href="#"><img src="images/${good.img}" width="210" height="185"/></a></div>
<div class="price">
<!-- ${good.price}是从对象里取对应值 -->
<span>¥${good.price}</span>
</div>
<div class="name"><a href="#">${good.name}</a></div>
<div class="carbg">
<a href="#" class="ss">收藏</a>
<a href="#" class="j_car">加入购物车</a>
</div>
</li>
</c:forEach>
</ul>
</body>
</html>
使用a标签跳转页面并传递参数(请求servlet跳转)
<a href="/selectGoodsById?id=${goods.id}"><img src="images/${goods.img}" width="160" height="136"/></a>
使用form表单跳转页面,传递值用input的name属性,servlet接收用req.getParameter(“name”)
<form action="/searchGoodsList" method="get">
<input type="search" name="name" value="" placeholder="请输入关键字" class="s_ipt"/>
<input type="submit" value="搜索" class="s_btn"/>
</form>
@WebServlet("/selectGoodsById")
public class selectGoodsByIdServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("id");
req.getRequestDispatcher("detail.jsp").forward(req, resp);
}
}
Ajax
异步刷新页面
使用方式
1.引入架包
<script src="jquery-3.4.1.js"></script>
2.使用
$.ajax({
<!-- 请求的servlet映射路径 -->
url: "/LoveGoods",
<!-- 请求方式 -->
method: "GET",
<!-- 向servlet发送的数据 -->
data:{
id:12
},
// 返回数据类型
dataType: "JSON",
success: function (res) {
// servlet响应的数据
alert("successful")
}
})
Java代码
// 响应Ajax请求,将数据先转成JSON
String jsonStr = JSONObject.toJSONString(result);
// 将数据原路返回
resp.getWriter().write(jsonStr);
实例
<!-- 头文件 -->
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<!-- 引入架包 -->
<script src="jquery-3.4.1.js"></script>
<!-- 点击收藏弹出收藏成功 -->
unction m1(id) {
$.ajax({
url: "/LoveGoods",
method: "GET",
data:{
id:id
},
// 返回数据类型
dataType: "JSON",
success: function (res) {
// servlet响应的数据
if (res == 1) {
$("ul.cate_list li .carbg a.ss").css({"background: url":"images/heart_h.png no-repeat 10px center"});
alert("successful")
} else {
alert("失败")
}
}
})
<!-- 操作的jsp页面 -->
<a id="bb1" href="#" onclick="m1(${good.id})" class="ss">收藏</a>
data里是数组的情况
需要使用JSON.stringify()将数组转成换成 JSON 格式的字符串
$.ajax({
url:"/checkHot",
method:"get",
data:{
ids:JSON.stringify(ids),
value:hotValue,
},
dataType:"json",
success:function(res){
if(res>0){
lightyear.notify('设置成功~','success', 3000);
}else{
lightyear.notify('没有要修改的商品或商品设置失败~', 'danger', 100);
}
}
})
Session和cookie
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
cookie
Cookie总时由用户客户端进行保存的(一般是浏览器),按其存储位置可分为:内存式Cookie和硬盘式Cookie。
内存式Cookie存储在内存中,浏览器关闭后就会消失,由于其存储时间较短,因此也被称为非持久Cookie或会话Cookie。
硬盘式Cookie保存在硬盘中,其不会随浏览器的关闭而消失,除非用户手工清理或到了过期时间。由于硬盘式Cookie存储时间是长期的,因此也被称为持久Cookie。
<!-- 创建和获取cookie -->
@WebServlet("/cookie")
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
Cookie cookie = new Cookie("name", "张三");
resp.addCookie(cookie);
// 获取cookie
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie c : cookies) {
System.out.println(c.getName() + " : " + c.getValue());
}
}
}
}
标签:Java,name,resp,req,jsp,Cookie,servlet,页面
From: https://blog.csdn.net/m0_72407563/article/details/143682700