一遍过JSP【JAVAEE基础】

1.JSP:动态网页(就是在html中嵌套java代码)

  • 动态网页:随着 时间、地点、用户操作的改变而改变,使用到服务端脚本语言(JSP)

2.JSP页面元素:HTML、java代码(脚本Scriptlet)、指令、注释
页面脚本

      1.
		   <%  
			局部变量、java语句(编译后:service方法中)
		   %>
      2.
          <%!  
			全局变量、定义方法(编译后:Servlet成员变量位置)
	      %>
      3.
          <%= 输出表达式 %>

指令

  • 1.page指令
    <%@ page contentType=“text/html;charset=UTF-8” language=“JSP页面使用的脚本语言” import=“导入类” %>

  • 2、taglib指令
    作用:导入标签库
    语法:<%@taglib uri="文件的uri名称" prefix="前缀(简写)"%>

  • 3、include指令
    作用:在当前页面用于包含其他页面
    语法: <%@include file="common/header.jsp%>

注释

  • html注释
  • java注释// /**/
  • jsp注释<%-- --%>

3.jsp执行流程:

  • jsp ->java(Servlet文件) ->class

4.JSP九大内置对象:
内置对象:在jsp中,不需要创建,可以直接使用的对象

jsp
5.基于JSP页面的项目案例
Session+mysql+MVC实现验证码登录【JAVAEE】

6.分页SQL

通用的标准分页sql
每页显示pageSize条记录:(pageSize:每页显示多少条记录)
第pageNo页:(pageNo-1)*pageSize,pageSize

mysql:从0开始计数,limit 开始,多少条.
第0页:
select * from emp limit 0,10;
第1页:
select * from emp limit 10,10;
第n页
select * from emp limit n*10,10;

sqlserver/oracle : 从1开始计数,
order rownum伪列字段
select * from student where sno>=(n-1)10-1 and sno<=n10;//前提:id值必须是连续的
select rownum,t * from student t where rownum>=(n-1)10+1 and rownum<n10 oreder by sno;
//1.如果根据sno排序则rownum会混乱(解决方案:分开使用->先只排序,再只查询rownum)
//2.rownum不能查询>的数据
//改为
select from
(
select rownum r,t.
from
(select s.* from student s order by sno asc) t
)
where r>=(n-1)10+1 and r<n10;
sqlServer row_number() over(字段)

6.简单jsp分页SQL案例
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
index.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.entity.Student" %>
<%@ page import="com.entity.Page" %><%--
  Created by IntelliJ IDEA.
  User: Chef Liu
  Date: 2020/5/19
  Time: 20:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>学生信息列表</title>
  </head>
    <script type="text/javascript" src="js/jquery-2.2.3.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("tr:odd").css("background-color","lightgray");
        })
    </script>
  <body>
      <%
          String error= (String) request.getAttribute("error");
          if (error!=null){
              if (error.equals("adderror")){
                  out.print("增加失败");
              } else if (error.equals("noadderror")){
                  out.print("增加成功");
              }
          }
          //null没有执行增加
      %>
      <h3 align='center'>学生列表</h3>
      <hr width='60%'>
     <table border='1' align='center' width='50%'>
     <tr align="center">
         <th>学号</th>
         <th>姓名</th>
         <th>年龄</th>
         <th>操作</th>
       </tr>

       <%
         //从request中获取数据
         Page pages= (Page) request.getAttribute("page");
         List<Student> students= (List<Student>) pages.getStudents();
         for (Student student:students){
        %>
         <tr align="center">
           <td><a href="QueryStudentBySnoServlet?sno=<%=student.getNo()%>"><%=student.getNo()%></a></td>
           <td><%=student.getName()%></td>
           <td><%=student.getAge()%></td>
           <td><a href="DeleteStudentServlet?sno=<%=student.getNo()%>">删除</a></td>
         </tr>
       <%
         }
       %>
         <a href="add.jsp">新增</a><br>

        <%
            //优化
            if (pages.getCurrentPage()==-0){//如果是首页
        %>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getCurrentPage()+1%>">下一页</a><br>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getTotalPage()-1%>">尾页</a><br>
         <%
            }
            else if (pages.getCurrentPage()==pages.getTotalPage()-1){//如果是尾页
         %>
                 <a href="QueryStudentByPageServlet?currentPage=0">首页</a><br>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getCurrentPage()-1%>">上一页</a><br>
         <%
            }
            else {//如果不是首页,也不是尾页
        %>
                 <a href="QueryStudentByPageServlet?currentPage=0">首页</a><br>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getCurrentPage()-1%>">上一页</a><br>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getCurrentPage()+1%>">下一页</a><br>
                 <a href="QueryStudentByPageServlet?currentPage=<%=pages.getTotalPage()-1%>">尾页</a><br>
         <%
             }
         %>


     </table>
  </body>
</html>

学生详细信息jsp

<%@ page import="com.entity.Student" %><%--
  Created by IntelliJ IDEA.
  User: Chef Liu
  Date: 2020/5/20
  Time: 16:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生详细信息</title>
</head>
<body>
    <%
        Student student= (Student) request.getAttribute("student");
    %>
    <!-- 通过表单展示此人 -->
    <form action="UpdateStudentServlet" method="get">
        学号:<input type="text" name="sno" value="<%=student.getNo()%>" readonly="readonly"><br>
        姓名:<input type="text" name="sname" value="<%=student.getName()%>"><br>
        年龄:<input type="text" name="sage" value="<%=student.getAge()%>"><br>
        地址:<input type="text" name="saddress" value="<%=student.getAddress()%>"><br>
        <input type="submit" value="修改">
        <a href="QueryStudentByPageServlet">返回</a>
    </form>

</body>
</html>

SQL后台代码暂未上传

7.EL: 表达式语言,可以替代JSP页面中的java代码

   传统的 在JSP中用java显示数据的弊端:类型转换、需要处理null、代码参杂-->EL

 - EL示例:
     ${requestScope.student.address.schoolAddress}<br>
     ${域对象.域对象中的属性.属性.级联属性}<br>


 - EL操作符
     点操作符  .      -- 使用方便
     中括号操作符 [""]  -- 功能强大:可以包含特殊字符(. 、 -),获取变量值

  获取map属性
       Map<String,Object> map=new HashMap<>();
       map.put("cn","中国");
       map.put("us","美国");
       request.setAttribute("map",map);
    ${requestScope.map.cn}

  isEmpty运算符:判断一个值存在不存在。

- EL表达式的隐式对象(内置对象)
   - 作用域访问对象
         pageScope requestScope sessionScope sessionScope applicationScope
	 如果不指定域对象,则默认会根据从小到大的顺序,依次取值

   - 参数访问对象:获取表单数据。
	 ${param.xxx}
	 ${paranValues.xxx[]}

   - JSP隐式对象 : pageContext     
     ${pageContext.xxx} 通过pageContext间接获取jsp的隐式对象。

8.JSTL:比EL更强大

   1.引入两个jar包:jstl.jar standard.jar
   2.引入taglib  <%@ taglib uri="...core"> prefix="c" %>
   。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值