①创建商品表:商品编号,名字,价格,日期,产地;
②使用servlet+dao查询数据显示到页面。
数据访问层dao:
- public class GoodsDaoImpl implements IGoodsDao {
- @Override
- public List
selectAllGoods() { - String sql = "select goodsId,goodsName,price,proDate,proAdd from goods";
- BaseDao.setPst(sql,null);
- List
- List
allGoods = new ArrayList<>(); - if(rows.size()>0){
- for (Map map :rows) {
- Goods goods = new Goods(
- (Integer) map.get("goodsId"),
- (String) map.get("goodsName"),
- new BigDecimal(map.get("price").toString()).doubleValue(),
- (Date)map.get("proDate"),
- (String)map.get("proAdd")
- );
- allGoods.add(goods);
- }
- return allGoods;
- }
- return null;
- }
- }
servlet:
- @WebServlet(urlPatterns = "/GoodsServlet")
- public class GoodsServlet extends HttpServlet {
- IGoodsService goodsService = new GoodsServiceImpl();
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- req.setAttribute("goodsList",goodsService.Goodses());
- req.getRequestDispatcher("/main.jsp").forward(req,resp);
- }
JSP:
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
-
Title "">-
-
-
编号 -
品名 -
价格 -
生产日期 -
生产地址 -
-
-
-
"${goodsList}" var="goods"> -
-
${goods.goodsId} -
${goods.goodsName} -
${goods.price} -
${goods.proDate} -
${goods.proAdd} -
-
-
-
在HTML中嵌入Java脚本语言,jsp相当于是一个特殊的servlet,但是普通的servlet虽然可以显示页面数据,完成css,js 的功能,但是编写代码过于麻烦。
当客户端请求JSP页面时,JSP文件先转换成Servlet文件,再编译成class文件,最后执行返回给客户端(响应)。
当webapp放置在Tomcat容器下的时候,jsp生成的Java文件与编译好的class文件会被放置在Tomcat的work目录下,方便查看;idea的web项目不是直接将webapp放在Tomcat容器中,而是将生成的webapp与tomcat按照idea的"技术"形成连接,这样可以减少配置tomcat的时间。


作用:用于配置jsp页面,导入资源文件;
格式:<%@ 指令名称 属性名=属性值%>
①page 配置jsp页面
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
②taglib 导入jsp标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
③include 页面包含,导入资源文件
<%@ include file="xxx.jsp"%>
①html注释:
只能注释html代码,java代码依旧会执行
②jsp注释:
<%-- --%> 所有都可以注释,无论java代码还是html内容
| 内置对象 | Servlet类型 | 作用 |
| pageContext | PageContext | 页面上下文,页面的环境 |
| page | 当前页面 | 作用域对象,当前jsp页面 |
| request | HttpServletRequest | 作用域对象,一次请求(a.jsp-->servlet-- >forward-->b.jsp) |
| session | HttpSession | 作用域对象,一次会话 |
| application | ServletContext | 作用域对象:整个程序运行期间,数据可以共享;一般用来存储全局的系统配置 |
| response | HttpServletResponse | 响应数据 |
| config | ServletConfig | 获取配置信息 |
| out | JspWriter;PrintWirter | 在页面上输出内容 |
| exception | 异常信息 |
可以存储数据,每个域对象存储数据的范围不一样。
①pageContext(数据的作用域在当前页面)
②request(数据的作用域,在一次请求转发范围内有效。可以跨页面传递数据)
③session(数据的作用域在一次会话内,可以被多次请求共享)
④application(对应于整个网站应用程序,存储数据作用域是整个网站范围,可以被多个会话共享)
Expression Language:表达式语言,用于替换 <%=变量名%>
①EL表达式可以直接从四大域对象中取数据,不能获取不在域对象中的数据;
②jsp默认支持EL表达式,可以使用转义“\”忽略;
③从四大域对象相中获取对象类型的属性值实际上是调用相应的get方法,如${student.stuName} 实际上是调用student对象中的 getStuName()方法。
算术运算
关系运算
逻辑运算
值的获取只能从域对象中获取(四大域 pageContext ,request,session,application);
当不确定域对象的时候,如${键名},会按照域对象的范围从小到大去找。
四大域的范围是:pageContext < request < session < application
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能,JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, SQL标签, 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
根据JSTL标签所提供的功能,可以将其分为5个类别:
①核心标签
②格式化标签
③SQL 标签
④XML 标签
⑤JSTL 函数
①引入jar包
jstl-1.2.jar , standard.jar,c-1_0-rt.tld
②jsp页面上引入指令
servlet 3.0 tomcat9之前:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
servlet 4.0 tomcat9:
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
没有else,如果想要else就再写一个< c:if>
(c 就是 引入中的 prefix 可以改)
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
- <html>
- <head>
- <title>Titletitle>
- head>
- <body>
-
- <%
- int score = 12;
- if(score>10){
- out.print("优秀");
- }else{
- out.print("不优秀");
- }
- %>
- <hr/>
- <%
- request.setAttribute("score",12);
- %>
- <c:if test="${score>10}">
- 优秀
- c:if>
- <c:if test="${score<=10}">
- 不优秀
- c:if>
- body>
- html>
- <c:forEach var="i" begin="1" end="10" step="3" varStatus="s">
- 数字:${i} 数字次序:${s.count} <br/>
- c:forEach>
- <c:forEach items="${stus}" var="stu">
- <tr>
- <td>${stu.id}td>
- <td>${stu.name}td>
- <td>${stu.sex}td>
- tr>
- c:forEach>