JSP入门

作者: 丫甘九 | 来源:发表于2019-04-09 20:51 被阅读0次

1、JSP的作用

Servlet:

缺点:不适合设置html响应体,需要大量的reponse.getWriter.print("html")
优点:动态资源,可以编程

html

缺点:html是静态页面,不能包含动态信息
优点:不用为输出html标签而发愁

JSP(java server pages)

优点:在原有html的基础上添加java脚本,构成jsp页面

2、JSP和Servlet的分工

JSP

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

Servlet

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

image.png

3、JSP组成

jsp = html + java脚本 + jsp标签(指令)
jsp中无需创建即可使用的对象一共有九个,被称之为九大内置对象,例如:request对象,out对象
3种java脚本
<%...%>:
java代码片段(常用),用于定义0-N条java语句,方法内能写什么,他就可以放什么!
<%=...%>:
java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果,reponse.getWriter().print(...);这里能放什么,他就可以放什么!
<%!...!%>:
声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)

Jsp中java脚本演示

<%--它是jsp指令,也是一种特殊的标签--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--java代码片段--%>
<%
  /*获取项目名*/
String path = request.getContextPath();
/*http://localhost:8080/day10_1/*/
String basepath = request.getScheme()+":"+"//"+request.getServerName()+":"+
request.getServerPort()+path+"/";

%>
<html>
  <head>
    <%--向页面输出basepath--%>
    <base href="<%=basepath%>">
    <title>$Title$</title>
  </head>
  <body>
  $END$dasfa
  <%
  int a = 10;
  %>
  <%
  out.print(a++);
  %>
  <%=a%>
  <%!
  int a =100;
  public void fun(){
    System.out.println(a);
  }
  %>
  <%
  out.print(this.a++);
  fun();
  %>
  </body>
</html>

image.png
<%--它是jsp指令,也是一种特殊的标签--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%--java代码片段--%>
<%
  /*获取项目名*/
String path = request.getContextPath();
/*http://localhost:8080/day10_1/*/
String basepath = request.getScheme()+":"+"//"+request.getServerName()+":"+
request.getServerPort()+path+"/";

%>
<html>
  <head>
    <%--向页面输出basepath--%>
    <base href="<%=basepath%>">
    <title>$Title$</title>
  </head>
  <body>
 <table border="1" align="center" width="60%">
   <tr>
     <td>name</td>
     <td>age</td>
   </tr>
  <%
    for (int i = 0;i < 10; i++) {
  %>
   <tr>
     <td>zhangsan</td>
     <td>28</td>
   </tr>
  <%
    }
  %>

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

image.png

jsp和servlet分工的案例

image.png
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basepath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <base href="<%=basepath%>">
    <title>$Title$</title>
  </head>
  <body>
  <form action="/day11/AServlet" method="post">
    整数1:<input type="text" name="num1"><br/>
    整数2:<input type="text" name="num2"><br/>
    <input type="submit" value="提交">
  </form>
  </body>
</html>


package baoming;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "AServlet")
public class AServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*获取参数*/
        String s1 = request.getParameter("num1");
        String s2 = request.getParameter("num2");
        /*转换成int类型*/
        int num1 = Integer.parseInt("num1");
        int num2 = Integer.parseInt("num2");
        /*运算*/
        int sum = num1 + num2;
        /*把结果保存到request域中*/
        request.setAttribute("result","sum");
        /*转发到result.jsp中*/
        request.getRequestDispatcher("/day11/jia/result.jsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String path = request.getContextPath();
    String basepath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
    <base href="<%=basepath%>">
    <title>Title</title>
</head>
<body>
<%
Integer result = (Integer)request.getAttribute("result");
%>
<%=result %>
</body>
</html>


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AServlet</servlet-name>
        <servlet-class>baoming.AServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AServlet</servlet-name>
        <url-pattern>/AServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>formjsp</servlet-name>
        <jsp-file>/jia/form.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>formjsp</servlet-name>
        <url-pattern>/form.jsp</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>resultjsp</servlet-name>
        <jsp-file>/jia/result.jsp</jsp-file>
    </servlet>
    <servlet-mapping>
        <servlet-name>resultjsp</servlet-name>
        <url-pattern>/result.jsp</url-pattern>
    </servlet-mapping>


</web-app>

JSP原理

  • jsp其实就是一种特殊的Servlet

当jsp页面第一次被访问时,服务器会把jsp编译成java文件,(这个java文件其实就是一个servlet类)
然后再把java编译成.class
然后创建该类对象
最后调用他的service方法
第二次请求同意jsp时,直接调用service()方法

  • 在tomcat的work目录下面,可以找到对应的.java源代码
  • 查看jsp对应的java文件

java脚本
html

JSP注释

<%!......!%>:当服务器把jsp编译成java文件时已经忽略了注释部分

相关文章

  • JSP技术

    1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...

  • 学习参考文章

    JSP入门及MyEclipse的使用

  • Jsp入门实战上

    前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...

  • Day16--Cookie&Session&JSP

    会话技术 Cookie JSP:入门学习 Session

  • Jsp入门须知

    jsp入门 jsp老弟是啥? jsp全称是Java Server Pages,是Java所提供的一门用于开发动态W...

  • JavaWeb学习记录-Jsp登录注册功能完整示例

    HelloJsp Jsp入门学习工程,实现jsp注册登录功能 源代码下载:https://github.com/t...

  • JSP入门

    web开发相应技术 前端技术 html css js 动态语言技术 Java jsp php 数据库技术 orac...

  • jsp入门

    ${pageContext.request.contextPath} // 在JSP页面动态获得项目名 类型 ...

  • JSP入门

    JSP的基本语法:1.JSP声明语法。2、JSP程序脚本。3、JSP脚本注释。4、JSP内容输出表达式。5、JSP...

  • JSP入门

    JSP概述 JSP( Java Server Page),它和servlet技术一样,都是SUN公司定义的一种用于...

网友评论

      本文标题:JSP入门

      本文链接:https://www.haomeiwen.com/subject/lyjbiqtx.html