JSP简介

1.jsp简介
   JSP全称是Java Server Pages,用于开发动态web资源的技术。
    Sun公司于1998年发布JSP第一版,目前最新版本是随Java EE 7一起发布的JSP 2.3版。

JSP技术的特点:
     JSP是一种服务器端脚本语言,其出现降低了Servlet编写页面的难度。
     JSP本质上就是Servlet,实际上JSP是首先被翻译成Servlet后才编译运行的,
     因此JSP能够实现Servlet所能够实现的所有功能。
     相比html而言,html只能为用户提供静态数据,
     而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
2.运行原理
   第一次请求jsp页面时,先翻译成servlet的java文件,编译成class文件,运行解释成html页面, 将html响应给客户端   
   再次请求jsp时,查找class文件,运行解释成html页面,将html响应给客户端。 
3.JSP页面基本结构
   jsp元素和html组成
   jsp元素有3种:
      脚本元素(scripting element)
      <%   java代码   %>  
      <%! 声明变量 函数  %>  
      <%-- 注释jsp元素 --%>
      <%= 输出表达式  %>    
    [注意]  %与--,!,==之间不能有空格     
      <%@page import="java.util.Calendar"%>    
      <%-- <%
           Calendar cal=Calendar.getInstance();
          if(cal.get(Calendar.AM_PM)==Calendar.AM){
              out.print("上午好");
          }else{
              out.print("下午好");
          }
        %> --%>
        <%! Calendar cal=Calendar.getInstance(); %>
        <% if(cal.get(Calendar.AM_PM)==Calendar.AM){ %>
        <%="上午好" %>
        <% }else{ %>
        <%="下午好" %>
        <%} %>
    [ 注意  ]1. 定义变量时, <%%>会在jsp_service方法中定义,成为该方法的局部变量
                          <%!%%>会在XX_jsp类中定义,成为该类的成员属性    
               2.定义函数,因为函数不允许嵌套,所以只能用<%!%>定义,使其成为该类的成员方法
              3.注释<%--  -->注释的内容不会翻译成servlet的java文件
                <!--  -->注释的内容会翻译成servlet文件,编译,运行 html响应给浏览器,页面不显示但是在开发者工具中能看到
      指令元素(directive element)
      <%@page   %>  <%@之间不能有空格 
      属性
        import=""导包
        contentType=“” 响应的mime类型与编码格式 contentType="text/html; charset=utf-8" 
        pageEncoding 页面的编码格式 pageEncoding="utf-8"
        errorPage指定错误页面 ,errorPage="index.jsp"
        isErrorPage是否为错误页面,默认false,isErrorPage="true"
        session 是否支持session,默认true
        
      <%@include   %>    静态导入新页面 ,新页面可以是jsp或者html
        <%@include file="文件"%>
        导入的页面和本页面一起翻译servlet文件
      【注意】两个文件不能有相同的变量,相同的函数声明
      
     <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
       prefix标签的前缀 ,可以命名
       输出内容
        <c:out value="hello"></c:out>
    
    动作元素(action element
     背景:不希望jsp页面中有大批量的java业务代码。影响维护性和可读性。
        <jsp:include>标签  动态导入文件(运行时导入)
           <jsp:include page="top.jsp"></jsp:include>
         //org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "top.jsp", out, false);
          【注意】动态导入在两个页面可以设置相同变量或者相同的函数,互不影响。
    区别:对包含文件的处理方式和处理时间不同。
    include指令元素是在翻译阶段就引入所包含的文件,
               被处理的文件在逻辑和语法上依赖于当前JSP页面,
               其优点是页面的执行速度快。
    include动作元素是在JSP页面运行时才引入包含文件所产生的应答文本,
              被包含的文件在逻辑和语法上独立于当前JSP页面,
              其优点是可以使用param子元素更加灵活地处理所需要的文件,
              缺点是执行速度要慢一些。

        <jsp:forward>标签  页面跳转
        
        <jsp:param>标签    设置参数
          
          <jsp:forward page="test03-1.jsp">
              <jsp:param value="chengxx" name="username"/>
         </jsp:forward>
         //test03-1.jsp目标页面
         <%=new String(request.getParameter("username").getBytes("iso-8859-1"),"utf8") %>
    
      <jsp:include page="top.jsp">
         <jsp:param value="100" name="nn"/>
      </jsp:include>

 7.jsp版的计算器 
   简易版:
     

  <form action="result.jsp" onsubmit="return ck()">
            <input type="text" name="num1" placeholder="第一个数" id="d1">
            <input type="text" name="num2" placeholder="第二个数" id="d2">
            <select name="op" id="d3">
                  <option value="">请选择计算符号</option>
                 <option value="+">+</option>
                 <option value="-">-</option>
                 <option value="*">*</option>
                 <option value="/">/</option>
            </select>
            <input type="submit" value="计算">
        </form>
        <script type="text/javascript">
          var d1=document.getElementById("d1")
          var d2=document.getElementById("d2")
          var d3=document.getElementById("d3")
          function ck(){
              var flag=false;
              if(d1.value==""||d2.value==""||d3.value==""){
                  alert("输入不能为空")
              }else if(isNaN(d1.value)||isNaN(d2.value)){
                  alert("请输入数字")
              }else if(d2.value=="0"&&d3.value=="/"){
                  alert("除数不能为0")
              }
              else{
                  flag=true;
              }
              return flag
          }
        </script>
 
    result.jsp
       <%
           String num1=request.getParameter("num1");
           String num2=request.getParameter("num2");
           String op=request.getParameter("op");
           double x=0 ,y=0,z=0;
          if(num1!=null&&num2!=null&&op!=null){
            x=Double.parseDouble(num1);
            y=Double.parseDouble(num2);
            switch(op){
              case "+": z=x+y;break;
              case "-": z=x-y;break;
              case "*": z=x*y;break;
              case "/": z=x/y;break;
            }
          }
           
        %>
        计算结果:<span id="res"><%=z %></span>

   //同一个页面
 

  <%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
        <!DOCTYPE html >
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Insert title here</title>
        </head>
        <body>
        <%
           String num1=request.getParameter("num1");
           String num2=request.getParameter("num2");
           String op=request.getParameter("op");
           double x=0 ,y=0,z=0;
          if(num1!=null&&num2!=null&&op!=null){
            x=Double.parseDouble(num1);
            y=Double.parseDouble(num2);
            switch(op){
              case "+": z=x+y;break;
              case "-": z=x-y;break;
              case "*": z=x*y;break;
              case "/": z=x/y;break;
            }
          }
           
        %>

        <form action="" onsubmit="return ck()">
            <input type="text" name="num1" placeholder="第一个数" id="d1" value="<%=num1!=null?num1:""%>">
            <input type="text" name="num2" placeholder="第二个数" id="d2" value="<%=num2!=null?num2:""%>">
            <select name="op" id="d3">
                 <option value="">请选择计算符号</option>
                 <option value="+" <%= "+".equals(op)?"selected":"" %>>+</option>
                 <option value="-" <%= "-".equals(op)?"selected":"" %>>-</option>
                 <option value="*" <%= "*".equals(op)?"selected":"" %>>*</option>
                 <option value="/" <%= "/".equals(op)?"selected":"" %>>/</option>
            </select>
            <input type="submit" value="计算">
            
        </form>

        计算结果:<span id="res">
        <%=z %>
        </span>
        <script type="text/javascript">
          var d1=document.getElementById("d1")
          var d2=document.getElementById("d2")
          var d3=document.getElementById("d3")
          function ck(){
              var flag=false;
              if(d1.value==""||d2.value==""||d3.value==""){
                  alert("输入不能为空")
              }else if(isNaN(d1.value)||isNaN(d2.value)){
                  alert("请输入数字")
              }else if(d2.value=="0"&&d3.value=="/"){
                  alert("除数不能为0")
              }
              else{
                  flag=true;
              }
              return flag
          }
        </script>
        </body>
        </html>

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个开源的Java Servlet容器,用于运行Java Web应用程序。它是Apache软件基金会的一个项目。而JSP(JavaServer Pages)是一种用于创建动态Web页面的技术,它允许在HTML文件中嵌入Java代码。\[1\] 在Tomcat中使用JSP,首先需要在Tomcat服务器上搭建一个本地环境。这包括安装Java环境和配置Tomcat服务器。一旦Tomcat服务器搭建完成,就可以在工程中创建JSP文件,并将其放置在指定的目录中。当访问Tomcat服务器时,服务器会读取工程的配置文件web.xml,并根据配置文件中的设置找到JSP文件并将其显示在浏览器中。\[2\] 学习JSP对于Android网络开发也是很有必要的,因为在与服务器进行交互时,了解JSP的原理可以帮助我们更好地理解整个访问过程。\[3\] #### 引用[.reference_title] - *1* [基于Tomcat环境下运行JSP文件(基础版)](https://blog.csdn.net/qq_33413510/article/details/125542090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)](https://blog.csdn.net/weixin_33747129/article/details/86199137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值