什么是作用域对象?
作用域指的是变量的适用范围。 在传统的面向对象程序设计中,主要关注于公用和私有作用域。 公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。
作用域四大对象
1. request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。
应用场景 : 常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。
2. session
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。
应用场景 : 常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
3. Application(ServletContext)
ServletContext在服务器启动时创建,在服务器关闭时销毁。
所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,全局变量,只要设置一次,则所有的网页窗口都可以取得数据。
应用场景 : 一般用于在多个客户端间共享数据时使用。
4. page
page对象即this,代表JSP本身,更准确的说它代表JSP被翻译后的Servlet,因此他可以调用Servlet类所定义的方法。page对象的类型为javax.servlet.jsp.HttpJspPage。
应用场景 : 在实际应用中,page对象很少在JSP中使用。
添加和删除的操作
1.页面设计
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页</title>
</head>
<body>
<!-- 在页面导入jstl的核心 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h2>欢迎来自${user.address}的${user.username}到主页</h2>
<table>
<a href="addGoods.jsp">添加商品</a>
<thead>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品说明</th>
</tr>
</thead>
<tbody>
<c:forEach items="${goodsList}" var="goods">
<tr>
<td>${goods.gid}</td>
<td>${goods.gname}</td>
<td>${goods.price}</td>
<td>${goods.mark}</td>
<td>
<a href="del?gid=${goods.gid}">删除</a>
</td>
<td>
<a href="udate?gid=${goods.gid}">修改</a>
</td>
</tr>
</c:forEach>
</tbody>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加商品</title>
</head>
<body>
<form action="addgoods" method="post">
商品名称:<input type="text" name="gname" value=""><br/>
商品价格:<input type="number" step="0.01" name="price" value=""><br/>
商品信息:<textarea name="mark"></textarea><br/>
<input type="submit" value="添加商品">
</form>
</body>
</html>
2.dao(添加和删除)
public class Goodsdao {
private Connection con = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
public List<Goods> SelectAll() throws SQLException {
List<Goods> goodsList = new ArrayList<>();
//加载驱动
con = JDBCUtil.getCon();
//创建sql语句
String sql = "select * from t_goods";
//执行sql语句
ps = con.prepareStatement(sql);
//获取结果集
rs = ps.executeQuery();
Goods goods=null;
while(rs.next()){
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);
}
//关闭数据库
JDBCUtil.close(rs,ps,con);
return goodsList;
}
}
public class Deletedao {
private Connection con = null;
private PreparedStatement ps=null;
private ResultSet rs=null;
public Boolean delectGoods(int gid) throws SQLException {
Boolean bool=null;
con = JDBCUtil.getCon();
//创建sql语句
String sql = "delete from t_goods where gid=?";
//获取sql语句
ps = con.prepareStatement(sql);
//传参
ps.setObject(1,gid);
int i = ps.executeUpdate();
if (i > 0) {
bool = true;
} else {
bool = false;
}
//关闭数据
JDBCUtil.close(ps,con);
return bool;
}
}
3.服务器
@WebServlet("/addgoods")
public class AddGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
//1.编写代码的格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
System.out.println("hhhh");
//2.获取添加商品的信息
Goods goods=null;
goods=new Goods();
goods.setGname(req.getParameter("gname"));
goods.setPrice(Double.parseDouble(req.getParameter("price")));
goods.setMark(req.getParameter("mark"));
System.out.println(goods);
//3.请求
Boolean bool = null;
//4.调用jdbc新增数据的方法进行操作
Insertdao insertdao = new Insertdao();
try {
bool = insertdao.addGoods(goods);
} catch (Exception e) {
e.printStackTrace();
}
if (bool!=false){
req.getRequestDispatcher("GoodsSelectAll").forward(req,resp);
}else{
req.setAttribute("error","添加出现了问题");
req.getRequestDispatcher("error1.jsp").forward(req,resp);
}
}
}
@WebServlet("/del")
public class DelectGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.编写代码的格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//2.获取添加商品的信息
int gid = Integer.parseInt(req.getParameter("gid"));
//3.请求
Boolean bool = null;
//4.调用jdbc新增数据的方法进行操作
Deletedao deletedao = new Deletedao();
try {
bool = deletedao.delectGoods(gid);
} catch (Exception e) {
e.printStackTrace();
}
if (bool != false) {
req.getRequestDispatcher("GoodsSelectAll").forward(req, resp);
} else {
req.setAttribute("error", "添加出现了问题");
req.getRequestDispatcher("error1.jsp").forward(req, resp);
}
}
}