1、ServletContext
ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。
一个web应用对应一个ServletContext实例,这个实例是应用部署启动后,servlet容器为应用创建的。ServletContext实例包含了所有 servlet共享的资源信息。通过提供一组方法给servlet使用,用来和servlet容器通讯。
Session默认的生存时间是1800秒。
2、作用域对象
2、1 pageContext
ageContext对象:它的生命周期即page域,指存储在pageContext对象的数据只在当前页面有效,当发生页面跳转时,则在pageContext域的数据进行销毁。
2、2 request
request对象主要用于处理客户端请求,同时request对象也是作用域对象,它的作用域范围是同一个请求。
request对象常用方法
方法说明
void setAttribute(String name,Object value)把name属性储存到request对象
Object getAttribute(String name)返回name属性的值
void removeAttribute(String name)从request对象中移除name属性
String getParameter(String name)返回指定name的参数值
Enumeration getParameterNames()以枚举类型返回所有的参数名称
String getParameterValues(String name)以字符数组类型返回所有指定name参数值
Map getParameterMap()以java.util.Map类型返回请求参数
2、3 session
session对象用来存储有关用户会话的所有信息,它的作用域范围是同一个会话
session对象常用方法:
void setAttribute(String key,Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","admin");
Object getAttribute(String key):根据名称去获取session中存放对象的值
String name =(string) session.getAttribute("name");
2、4 application
application类似于系统的“全局变量”,用于实现用户之间的数据共享,它的作用域范围是在服务器一开始执行服务,到服务器关闭为止。
application 对象实现了javax.servlet.ServletContext接口
application对象的常用方法:
void setAttribute(String key,Object value):以键/值的方式,将一个对象的值存放到application中
void getAttribute(String key)通过键的方式,把对应的值取出来。
1.创建数据库,输入需要的内容
create table t_goods
(
gid int primary key auto_increment,
gname varchar(20),
price double,
mark varchar(100)
);
insert into t_goods(gname,price,mark) values('泡面',4.5,'够香够辣就是这个味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉质细腻Q弹!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰凉随心爽!');
select * from t_goods;
2.设置成功页面
<%@ page import="com.fu.bean.Goods" %>
<%@ page import="java.util.List" %>
<%@ page import="com.fu.bean.User" %>
<%--
Created by IntelliJ IDEA.
User: 86135
Date: 2023/2/17
Time: 18:48
To change this template use File | Settings | File Templates.
--%>
<html>
<head>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<title>成功</title>
</head>
<body>
<h3>欢迎来自${login.address}的${login.username}来到成功页面</h3>
<table>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品编说明</th>
</tr>
<c:forEach items="${goodsList}" var="goods">
<tr>
<td>${goods.gid}</td>
<td>${goods.gname}</td>
<td>${goods.price}</td>
<td>${goods.mark}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
3.创建goods类
package com.fu.bean;
public class Goods {
private Integer gid;
private String gname;
private String price;
private String mark;
public Integer getGid() {
return gid;
}
public void setGid(Integer gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getMark() {
return mark;
}
public void setMark(String mark) {
this.mark = mark;
}
@Override
public String toString() {
return "Goods{" +
"gid=" + gid +
", gname='" + gname + '\'' +
", price='" + price + '\'' +
", mark='" + mark + '\'' +
'}';
}
}
4.创建接口
package com.fu.dao;
import com.fu.bean.Goods;
import java.util.List;
public interface GoodsDao {
List<Goods> selectAll();
int addgoods(Goods goods);
int deletegoods(int gid);
Goods selectAll01(int gid);
int updategoods(Goods goods);
}
5.完善接口
package com.fu.dao.impl;
import com.fu.bean.Goods;
import com.fu.bean.User;
import com.fu.dao.UserDao;
import com.fu.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class GoodsDaoImpl implements UserDao {
private Connection connection = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
List<Goods> goodsList =new ArrayList<>();
int row=0;
@Override
public User login(String username, String password) {
return null;
}
@Override
public int zhuce(User user) {
return 0;
}
@Override
public List<Goods> selectAll() {
try {
//调用jdbc工具类
connection = JDBCUtil.connection();
//定义sql语句
String sql = "select * from t_goods";
//获取预处理
ps = connection.prepareStatement(sql);
//执行添加
rs = ps.executeQuery();
//遍历结果集
while (rs.next()){
Goods goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
goodsList.add(goods);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
JDBCUtil.colse(ps, connection);
}
return goodsList;
}
@Override
public int addgoods(Goods goods) {
try {
//调用jdbc工具类
connection = JDBCUtil.connection();
//定义sql语句
String sql = "insert into t_goods(gname,price,mark) values (?,?,?)";
//获取预处理
ps = connection.prepareStatement(sql);
ps.setObject(1,goods.getGname());
ps.setObject(2,goods.getPrice());
ps.setObject(3,goods.getMark());
//执行添加
row= ps.executeUpdate();
System.out.println(row);
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
JDBCUtil.colse(ps, connection);
}
return row;
}
@Override
public int deletegoods(int gid) {
try {
//调用jdbc工具类
connection = JDBCUtil.connection();
//定义sql语句
String sql = "delete from t_goods where gid=?";
//获取预处理
ps = connection.prepareStatement(sql);
ps.setObject(1,gid);
//执行添加
row= ps.executeUpdate();
System.out.println(row);
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
JDBCUtil.colse(ps, connection);
}
return row;
}
public List<Goods> selectAll01(int gid) {
try {
//调用jdbc工具类
connection = JDBCUtil.connection();
//定义sql语句
String sql = "select * from t_goods where gid=?";
//获取预处理
ps = connection.prepareStatement(sql);
ps.setObject(1,gid);
//执行添加
rs = ps.executeQuery();
//遍历结果集
while (rs.next()){
Goods goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
goodsList.add(goods);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
JDBCUtil.colse(ps, connection);
}
return goodsList;
}
public int updategoods(int gid) {
try {
//调用jdbc工具类
connection = JDBCUtil.connection();
//定义sql语句
String sql = "update t_goods set gname=?,price=?,mark=? where gid=?";
//获取预处理
ps = connection.prepareStatement(sql);
Goods goods =new Goods();
ps.setObject(1,goods.getGname());
ps.setObject(2,goods.getPrice());
ps.setObject(3,goods.getMark());
ps.setObject(4,gid);
ps.setObject(1,gid);
//执行添加
row= ps.executeUpdate();
System.out.println(row);
} catch (Exception e) {
e.printStackTrace();
} finally {
//释放资源
JDBCUtil.colse(ps, connection);
}
return row;
}
}
6.创建servlet类
package com.fu.servlet;
import com.fu.bean.Goods;
import com.fu.dao.UserDao;
import com.fu.dao.impl.GoodsDaoImpl;
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 java.io.IOException;
@WebServlet("/add")
public class AddGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
//获取请求参数
Goods goods =new Goods();
goods.setGname(request.getParameter("gname"));
goods.setPrice(Double.parseDouble(request.getParameter("price")));
goods.setMark(request.getParameter("mark"));
UserDao goodsDao=new GoodsDaoImpl();
int row = goodsDao.addgoods(goods);
if(row>0){
request.getRequestDispatcher("selectGoodsAll").forward(request,response);
}else{
response.sendRedirect( "sb.jsp");
}
}
}
package com.fu.servlet;
import com.fu.dao.UserDao;
import com.fu.dao.impl.GoodsDaoImpl;
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 java.io.IOException;
@WebServlet("/del")
public class DeleteGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
int gid= Integer.parseInt(request.getParameter("gid"));
UserDao goodsDao = new GoodsDaoImpl();
int row=goodsDao.deletegoods(gid);
if (row > 0) {
request.getRequestDispatcher("selectGoodsAll").forward(request, response);
} else {
response.sendRedirect("sb.jsp");
}
}
}
package com.fu.servlet;
import com.fu.bean.Goods;
import com.fu.dao.UserDao;
import com.fu.dao.impl.GoodsDaoImpl;
import com.fu.dao.impl.UserDaoImpl;
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.util.List;
@WebServlet("/selectGoodsAll")
public class SelectGoodsAll extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
UserDao goodsDao=new GoodsDaoImpl();
List<Goods> goodsList = goodsDao.selectAll();
System.out.println(goodsList);
HttpSession session = request.getSession();
session.setAttribute("goodsList",goodsList);
response.sendRedirect("cg.jsp");
}
}
package com.fu.servlet;
import com.fu.bean.Goods;
import com.fu.dao.impl.GoodsDaoImpl;
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 java.io.IOException;
@WebServlet("/upd")
public class UpdateGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
int gid = Integer.parseInt(request.getParameter("gid"));
GoodsDaoImpl goodsDao = new GoodsDaoImpl();
Goods goods = goodsDao.selectAll01(gid);
System.out.println(goods);
//判断用户信息是否为空
if (goods != null) {
request.setAttribute("goods", goods);
request.getRequestDispatcher("update.jsp").forward(request, response);
} else {
response.sendRedirect("sb.jsp");
}
}
}
package com.fu.servlet;
import com.fu.bean.Goods;
import com.fu.dao.impl.GoodsDaoImpl;
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;
@WebServlet("/update")
public class UpdateGoods01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
Goods goods=new Goods();
goods.setGid(Integer.parseInt(request.getParameter("gid")));
goods.setGname(request.getParameter("gname"));
goods.setPrice(Double.parseDouble(request.getParameter("price")));
goods.setMark(request.getParameter("mark"));
System.out.println(goods);
GoodsDaoImpl goodsDao=new GoodsDaoImpl();
int row = goodsDao.updategoods(goods);
// 判断用户信息是否为空
if (row >0) {
request.getRequestDispatcher("selectGoodsAll").forward(request,response);
} else {
response.sendRedirect( "sb.jsp");
}
}
}
package com.fu.servlet;
import com.fu.bean.Goods;
import com.fu.dao.GoodsDao;
import com.fu.dao.UserDao;
import com.fu.dao.impl.GoodsDaoImpl;
import com.fu.dao.impl.UserDaoImpl;
import javax.servlet.RequestDispatcher;
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.util.List;
@WebServlet("/seach")
public class Seach extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String keyword = request.getParameter("keyword");
GoodsDao goodsDao=new GoodsDaoImpl();
List<Goods> goodsList = goodsDao.seach(keyword);
HttpSession session = request.getSession();
session.setAttribute("goodsList",goodsList);
response.sendRedirect("cg.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}