1.为什么使用JSP
1.因为Servlet中使用响应对象回写信息存在弊端:
1.响应体只适合将数据量较少的结果写到响应体中。
2.如果处理结果数量较多,会增加开发难度。
2.所以使用JSP文件来代替响应对象将处理结果写到响应体中。
2.JSP简单介绍
1.JSP:java server pages:java服务器页面
2.JSP文件只能存在于Web目录下
3.JSP文件可以写:java代码、JS、html代码。
3.简单示例:index.jsp
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <%-- JSP文件在执行的时候,自动将文件中所有的内容写入到响应体中,从而节省书写 out.print --%> 3 <html> 4 <table border="2" align="center"> 5 <tr> 6 <td>用户编号</td> 7 <td>用户姓名</td> 8 <td>用户密码</td> 9 </tr> 10 <tr> 11 <td>001</td> 12 <td>jason</td> 13 <td>123</td> 14 </tr> 15 <tr> 16 <td>002</td> 17 <td>john</td> 18 <td>123</td> 19 </tr> 20 </table> 21 </html>
4.JSP文件中java命令书写规则
1.执行标记:<% java代码 %>
index.jsp
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <% 3 // 在JSP文件中,只有书写在执行标记中的内容,才会被当做java代码执行。 4 int num1 = 10; 5 int num2 = 20; 6 int num3 = num1 + num2; 7 int num4 = num1 >= num2 ? num2:num1; 8 %>
2.输出标记:<%= %>
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <% 3 // 在JSP文件中,只有书写在执行标记中的内容,才会被当做java代码执行。 4 int num1 = 10; 5 int num2 = 20; 6 %> 7 变量num1的值是:<%=num1%><br/> 8 num1 + num2 = <%=num1 + num2%>
5.在JSP文件中导包: <%@ page import="java.util.List" %>
1 <%@ page import="java.util.ArrayList" %> 2 <%@ page import="java.util.List" %> 3 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 4 <% 5 // 在JSP文件中,只有书写在执行标记中的内容,才会被当做java代码执行。 6 List list = new ArrayList(); 7 %>
6.在JSP中,所有的执行标记都被当做一个整体来看
7.JSP内置对象:request
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <!-- 3 JSP文件内置对象:request 4 类型:HTTPServletRequest 5 作用:在JSP文件运行时,读取请求包信息。 6 与Servlet在请求转发过程中实现数据共享 7 浏览器:http://localhost:8080/myweb/index.jsp?userName=mike&password=123
测试:输入上面的网址即可 8 --> 9 <% 10 // 在JSP文件执行时,借助内置对象request读取请求包参数信息 11 String userName = request.getParameter("userName"); 12 String password = request.getParameter("password"); 13 %> 14 来访用户姓名<%=userName%><br/> 15 来访用户密码<%=password%>
8.JSP内置对象:session
1 index.jsp 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 3 <!-- 4 JSP文件内置对象:session 5 类型:HTTPSession 6 作用:在JSP文件运行时,可以通过session指向当前用户私人储物柜 7 添加或者读取共享数据 8 浏览器:http://localhost:8080/myweb/index.jsp?userName=mike&password=123 9 --> 10 <% 11 // 将共享数据添加到当前用户私人储物柜 12 session.setAttribute("key1",200); 13 %> 14 15 -------------------------------------------------------------------------------- 16 index_2.jsp 17 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 18 <% 19 // index.jsp和index_2.jsp为同一个用户/浏览器提供服务 20 // 因此可以使用当前用户在服务端的私人储物柜进行数据共享 21 Integer value =(Integer) session.getAttribute("key1"); 22 %> 23 index_2从当前用户中拿到的共享数据是<%=value%>>
测试:先访问index1.jsp。再访问index_2.jsp
8.JSP内置对象:application
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <!-- 3 JSP文件内置对象:application 4 类型:ServletContext application 全局作用域对象 5 作用:同一个网站中Servlet和JSP,都可以通过当前网站的全局作用域对象实现数据共享 6 --> 7 <% 8 application.setAttribute("key1","hello world"); 9 %> 10 11 ---------------------------------------------------------- 12 在Servlet中 14 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 15 ServletContext application = request.getServletContext(); // 获取全局作用域对象 16 String value =(String) application.getAttribute("key1"); 17 System.out.println(value); 18 }
一:Servlet与JSP的分工:
Servlet:负责处理业务并得到【处理结果】 ---->大厨
JSP: 负责将Servlet中【处理结果】写到响应体中 --->传菜员
二:Servlet 与 JSP之间调用关系:Servlet工作结束后,一般通过请求转发方式向Tomcat申请调用JSP
三:Servlet 与 JSP之间如何实现数据共享
Servlet将处理结果添加到【请求作用域对象】
JSP文件在运行时从【请求作用域对象】得到处理结果
9.JSP文件运行原理
1.Http服务器调用JSP文件步骤:
Http服务器做了下面的工作:
1.将JSP文件编辑为一个Servlet接口实现类(.java)
2.又把Servlet接口实现类编译为class文件(.class)
3.接着创建这个class文件的实例对象,就是Servlet实例对象
4.然后通过Servlet实例对象调用_jspService方法,将jsp文件写入到响应体中
10.web开发步骤:
1.准备表数据
2.创建表对应的实体类
3.创建Html页面
4.创建与Html页面对应的Servlet
1.通过请求对象,读取请求头参数信息
2.调用DAO类将得到的信息编辑成SQL语句,推送到数据库服务器并得到处理结果
1.什么是DAO类?
DAO(Data Access Object)数据访问接口
2.DAO类有什么用?
主要负责处理数据库操作,对于数据库中的数据做增删改查等操作的代码。
3.将处理结果写入到请求作用域对象作为共享数据给JSP
4.请求转发,向Tomcat申请info.jsp将结果写入到响应体中