JSP基础

JSP作用

jsp(java server page)就是一个servlet

servlet缺点是不适合设置html响应体,html缺点是静态界面,不能包含动态信息

jsp的优点就是在原有的html上加入了java脚本,构成了jsp页面


 

JSP和servlet分工

jsp:

作为请求发起页面,例如显示表单,超链接

作为请求结束页面,例如显示数据

servlet:

作为请求中处理数据的环节

 

 


 

JSP的组成

jsp=html+java脚本+jsp标签(指令)

jsp中无需创建直接使用的对象一共有9个,例如request对象,out对象...

3种java脚本:

1.<%...%> java代码片段(常用),用来定义0-N条java语句,方法内可以写什么,他就可以写什么

2.<%=...%> java表达式,用于输出(常用),用于输出一条表达式的结果,print(...)里面能放什么,他就能放什么

3.<%!...%> 声明,用来创建类的对象和成员方法(基本不用),class A{...}里面能放什么,他就能放什么

 


JSP中的java脚本

JSP中可以存放java脚本

新建一个javaweb项目,向自动生成的index.jsp中添加一些java脚本

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>Title</title>
 5 </head>
 6 <body>
 7 <table border="1" align="center" width="60%">
 8     <tr>
 9         <td>姓名</td>
10         <td>年龄</td>
11     </tr>
12     <%
13         for(int i=1;i<=10;i++){
14     %>
15     <tr>
16         <td>张三</td>
17         <td>18</td>
18     </tr>
19     <%
20         }
21     %>
22 </table>
23 </body>
24 </html>
 1 <!--他是JSP指令,是一种特殊的标签-->
 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 3 <!--java片段-->
 4 <%
 5   String path=request.getContextPath();//获取项目名
 6   String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";//获取基础路径
 7 %>
 8 <html>
 9   <head>
10     <title>$Title$</title>
11   </head>
12   <body>
13   $END$
14   <%
15     int a=10;
16   %>
17   <%
18     out.print(a);
19   %>
20   <%=a%>
21   <%!
22     int a=100;
23     public void fun1(){
24       System.out.println(a);
25     }
26   %>
27   <%
28     out.print(this.a++);
29     fun1();
30   %>
31   </body>
32 </html>

 


JSP和Servlet分工

需求:

 

 

 1 package Servlet;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.http.HttpServlet;
 5 import javax.servlet.http.HttpServletRequest;
 6 import javax.servlet.http.HttpServletResponse;
 7 import java.io.IOException;
 8 import java.security.Security;
 9 
10 public class AServlet extends HttpServlet {
11     public void doPost(HttpServletRequest req, HttpServletResponse rsp)throws ServletException, IOException {
12         //获取参数
13         String s1=req.getParameter("num1");
14         String s2=req.getParameter("num2");
15         //转换成int类型
16         int num1=Integer.parseInt(s1);
17         int num2=Integer.parseInt(s2);
18 
19         int sum=num1+num2;
20         req.setAttribute("result",sum);
21         //转换到result.jsp
22         req.getRequestDispatcher("Add/result.jsp").forward(req,rsp);
23     }
24 }
 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>Title</title>
 5 </head>
 6 <body>
 7 <form action="/JSPLearningDay2/AServlet" method="post">
 8     整数1:<input type="text" name="num1"/><br/>
 9     整数2:<input type="text" name="num2"/><br/>
10     <input type="submit" value="提交"/>
11 </form>
12 </body>
13 </html>
 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>Title</title>
 5 </head>
 6 <body>
 7 <%
 8     Integer result=(Integer) request.getAttribute("result");
 9 %>
10 <%=result%>
11 </body>
12 </html>

 


JSP原理

*jsp其实就是一个特殊的servlet

当jsp被第一次访问时,服务器会把jsp文件编译成java文件(这个java其实就是一个servlet类)

然后再把java变成.class

然后创建该类对象

最后调用service()方法

第二次请求同一jsp时,直接调用service()

*在tomcat的work文件目录下有将jsp变成java文件的源代码

jsp文件中,非java脚本直接翻译成out.write(".....")

java脚本原封不动,<%=....%>翻译成out.print(".....")

在翻译过程中,已经自动把jsp的注释<%--....--%>忽略掉,不会翻译

posted @ 2021-03-23 22:41  _厨师沙拉  阅读(43)  评论(0)    收藏  举报