JSP从0开始详细简介

简介: JSP从0开始详细简介

JSP从0开始详细简介

JSP 基本介绍

1. JSP 全称是 Java Server Pages,Java 的服务器页面

2. JSP 这门技术的最大的特点在于,写 JSP 就像在写 HTML

● 相比 html 而言,html 只能为用户提供静态数据,而 JSP 技术允许在页面中嵌套 java 代码,为用户提供动态数据

● 相比 Servlet 而言,Servlet 很难对数据进行排版,而 jsp 除了可以用 java 代码产 生动态数据的同时,也很容易对数据进行排版。

3. jsp 技术基于 Servlet, 你可以理解成 JSP 就是对 Servlet 的包装. 4. 会使用 JSP 的程序员, 再使用 thymeleaf 是非常容易的事情, 几乎是无缝接

应用实例-JSP 基本使用

创建 javaWEB 项目,并引  jar

sum.jsp

1. <%@ page import="java.io.PrintWriter" %>
2. <%@ page import="org.apache.jasper.runtime.HttpJspBase" %>
3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
4. <html>
5. <head>
6. <title>jsp的简单的求和计算器</title>
7. </head>
8. <body>
9. <h1>jsp的简单的求和计算器</h1>
10. <%
11.     //1. 在jsp的 该标签中, 可以写java代码
12.     int i = 10;
13.     int j = 20;
14.     int res = i + j;
15. 
16.     // jsp 中内置对象,可以直接使用, 比如 out
17.     out.println(i + " + " + j + " = " + res);
18.     // 如果要看HttpJspBase类的关系, 需要引入一个包, alt+enter
19. 
20.     //在java片段中,仍然是java的注释
21.     /*
22.         多行注释
23.      */
24. %>
25. <%--email: <%=email%>--%>
26. <!--html注释 -->
27. </body>
28. </html>

运行效果

注意事项和细节

1. jsp 页面不能像 HTML 页面, 直接用浏览器运行。只能通过浏览器访问 Tomcat 来访问jsp 页面

JSP 运行原理

1.   jsp 页面本质是一个 Servlet 程序, 其性能是和 java 关联的, 只是长得丑.

2.   第 1 次访问 jsp 页面的时候。Tomcat服务器会把jsp页面解析成为一个java源文件。并且对它进行编译成为.class字节码程序。

看下Cal.jsp对应的cal_jsp.java和cal_jsp.class

3.  分析下 cal_jsp.java 的源码,可以看出本质就是Servlet

提示

要看到源码和分析类图,需要加入 jasper.jar 这个包[在 tomcat/lib 下拷贝]

page 指令(常用的)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

1. language 表示 jsp 翻译后是什么语言文件, 只支持 java

2. contentType 表示 jsp 返回的数据类型,对应源码中 response.setContentType()参数值

3. pageEncoding 属性 表示当前 jsp 页面文件本身的字符集

4. import 属性 跟 java 源代码中一样。用于导包,导类

JSP 三种常用脚本

声明脚本基本语法 statement_jsp

1. 声明脚本的格式是: <%! 声明 java 代码 %>

2. 作用:定义 jsp 的需要属性、方法、静态代码块和内部类等

应用实例:

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>jsp声明脚本</title>
5. </head>
6. <body>
7. <h1>jsp声明脚本</h1>
8. <%!
9.     //这里我们可以声明该jsp需要使用的属性,方法,静态代码块, 内部类
10.     //也就是给 statement.jsp 对应的 statement_jsp 类定义成员
11.     //1. 属性
12.     private String name = "nnn";
13.     private int age;
14.     private static String company;
15. 
16.     //2 方法
17.     public String getName() {
18.         return name;
19.     }
20.     //3. 静态代码块
21.     static {
22.         company = "字节跳动";
23.     }
24. %>
25. </body>
26. </html>

表达式脚本基本语法

1. 表达式脚本的格式是:<%=表达式%>

2. 表达式脚本的作用是:在 jsp 页面上输出数据

3. 表达式脚本中的表达式不能以分号结束。

表达式脚本应用实例

script.jsp

1. </html>
2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
3. <html>
4. <head>
5. <title>jsp 表达式脚本</title>
6. </head>
7. <body>
8. <h1>jsp 表达式脚本应用实例</h1>
9.     <%!
10.     String name = "vvv";
11.     %>
12. <hr/>
13. <h1>个人信息</h1>
14.     用户名= <%=wyx%><br/>
15.     工作是: <%="java 工程师"%><br/>
16.     得到参数= <%=request.getParameter("sex")%>
17. </body>
18. </html>

代码脚本基本语法

1. 代码脚本的语法是:<% java 代码%>

2. 代码脚本的作用是:可以在 jsp 页面中,编写我们需要的功能(使用 java )

3. 可以由多个代码脚本块组合完成一个完整的 java 语句。

4. 代码脚本还可以和表达式脚本一起组合使用,在 jsp 页面上输出数据

应用实例:

计算结果

Monster.java

1. public class Monster {
2. private Integer id;
3. private String name;
4. private String skill;
5. 
6. public Monster(Integer id, String name, String skill) {
7. this.id = id;
8. this.name = name;
9. this.skill = skill;
10.     }
11. 
12. public Integer getId() {
13. return id;
14.     }
15. 
16. public void setId(Integer id) {
17. this.id = id;
18.     }
19. 
20. public String getName() {
21. return name;
22.     }
23. 
24. public void setName(String name) {
25. this.name = name;
26.     }
27. 
28. public String getSkill() {
29. return skill;
30.     }
31. 
32. public void setSkill(String skill) {
33. this.skill = skill;
34.     }
35. }

java_code.jsp

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>演示代码脚本</title>
5. </head>
6. <body>
7. <h1>演示代码脚本</h1>
8. <%
9.     //创建ArrayList ,放入两个monster对象
10.     ArrayList<Monster> monsterList = new ArrayList<>();
11.     monsterList.add(new Monster(1, "牛魔王", "芭蕉扇"));
12.     monsterList.add(new Monster(2, "蜘蛛精", "吐口水"));
13. %>
14. <table bgcolor="#f0f8ff" border="1px" width="300px">
15. <tr>
16. <th>id</th>
17. <th>名字</th>
18. <th>技能</th>
19. </tr>
20.     <%
21.         for (int i = 0; i < monsterList.size(); i++) {
22.             //先取出monster对象
23.             Monster monster = monsterList.get(i);
24.     %>
25. <tr>
26. <td><%=monster.getId()%></td>
27. <td><%=monster.getName()%></td>
28. <td><%=monster.getSkill()%></td>
29. </tr>
30.             <%
31.         }
32.     %>
33. 
34. </table>
35. </body>
36. </html>
37.

JSP 注释

JSP 内置对象

● 基本介绍

1、JSP 内置对象(已经创建好的对象, 直接使用 inbuild),是指 Tomcat 在翻译 jsp 页面成为Servlet 后,内部提供的九大对象,叫内置对象

2、内置对象,可以直接使用,不需要手动定义

● JSP 九大内置对象

1. out 向客户端输出数据,out.println("");

2. request 客户端的 http 请求

3. response 响应对象

4. session 会话对象

5. application 对应 ServletContext

6. pageContext jsp 页面的上下文,是一个域对象,可以 setAttribue(),作用范围只是本页面

7. exception 异常对象 , getMessage()

8. page 代表 jsp 这个实例本身

9. config 对应 ServletConfig

● 对照 Servlet 来理解就比较轻松了.

1) 一张图, 展示了 JSP 的父类 HttpJspBase 继承关系, 说明 JSP 内置对象的来源是 Servlet 和HttpJspPage

代码实列

HiServlet.java

1. public class HiServlet extends HttpServlet {
2. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
3.         System.out.println("HiServlet 被调用..");
4. 
5. //servlet中可以使用哪些对象
6. PrintWriter writer = response.getWriter();
7.         writer.println("haha");
8.         request.getParameter("age");
9.         response.setContentType("text/html;charset=utf-8");
10. HttpSession session = request.getSession();
11.         session.setAttribute("job", "java工程师90000");
12. //这个可以被多个 servlet 共享, 被多个会话共享-做网站计数器
13. ServletContext servletContext = request.getServletContext();
14.         servletContext.setAttribute("count", 666);
15. ServletConfig servletConfig = getServletConfig();
16.         servletConfig.getInitParameter("pwd");
17. 
18.     }
19. 
20. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
21.         doPost(request, response);
22.     }
23. }

inbuild_object.jsp

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>jsp内置对象</title>
5. </head>
6. <body>
7. <h1>jsp内置对象</h1>
8. <%
9.     //jsp的内置对象
10.     //out 类型是 JspWriter 父类就是 Writer.
11.     out.println("jsp out");
12. 
13.     //request是HttpServletRequest
14.     request.getParameter("age");
15. 
16.     //response就是 HttpServletResponse
17.     //response.sendRedirect("http://www.baidu.com");
18.     //session 就是 HttpSession
19.     session.setAttribute("job", "JAVA工程师");
20. 
21.     //application类型就是ServletContext
22.     application.setAttribute("name", "wyx");
23. 
24.     //pageContext 可以存放数据(属性), 但是该数据只能在本页面使用
25.     pageContext.setAttribute("age", 100);
26. 
27.     //exception 异常对象 使用比较少
28.     //page 内置对象,类似 this
29.     out.println("page=" + page);
30. 
31.     //config 内置对象的类型就是ServletConfig
32.     String pwd = config.getInitParameter("pwd");
33. 
34. 
35. %>
36. </body>
37. age: <%=pageContext.getAttribute("age")%>
38. </html>


目录
相关文章
|
6月前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
65 2
|
6月前
|
移动开发 JavaScript 前端开发
HTML ,XHTML,HTML5简介,js,JSP与Servlet的关系理解
HTML ,XHTML,HTML5简介,js,JSP与Servlet的关系理解
87 5
|
6月前
|
开发框架 前端开发 JavaScript
毕业设计论文--外文翻译:JSP技术简介
毕业设计论文--外文翻译:JSP技术简介
122 0
|
前端开发 Java
JSP简介&&EL表达式&& JSTL
JSP简介&&EL表达式&& JSTL
JSP简介&&EL表达式&& JSTL
|
XML Java 数据库
jsp简介
jsp简介
86 0
|
XML Java 数据库连接
JSP 简介
JSP 简介
99 0
|
XML JavaScript 前端开发
15.jsp简介
15.jsp简介
112 0
|
Java 应用服务中间件
7.JSP简介
---恢复内容开始--- 1.JSP简介 Java动态网页技术标准(Java Server Pages)是基于Servlet技术以及整个Java体系的Web开发技术是用于动态生成HTML文档的Web页面模板JSP是为了改进Servlet输出动态的HTML复杂、烦琐等缺点而提出的,JSP允许Java代码与HTML写在同一页面中,使开发人员能快速的开发包括大量HTML代码的动态网页。
1274 0
|
Java .NET 开发框架