JSP - 基础篇

  1. 第一个 JSP 程序












  2. JSP简介
    a、JSP全名为Java Server Pages,中文名叫Java服务器页面,其根本是一个简化的Servlet设计。
    b、JSP是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*jsp)。
    c、用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  3. JSP程序的执行过程

    Ps:这里的hello.java文件其实是servlet程序。
  4. JSP程序的生命周期
  5. JSP声明语法

    Ps:编译时,会直接转成Java类文件中的【成员变量】和【成员方法】。
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%!
    	String str = "hello world";
    	String getStr(){
    		return "hello world2";
    	}
    %>
    <hr>
    <% out.println(this.str); %>
    <hr>
    <%= this.getStr() %>
    
    </body>
    </html>

  6. JSP程序脚本
    a、包括变量的声明、表达式和程序逻辑。
    b、声明的变量转换为_service方法中的变量,因而是局部变量。
    c、语句块可以自由地与将Java脚本与页面代码组合使用。
    d、<%! %> // 成员变量、方法;<%  %> // 局部变量、方法。
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    
    <% int i = 10; %>
    <%
    	if(i > 10){
    		out.println("i > 10");
    	}else{
    		out.println(" i <= 10");
    	}
    %>
    <hr>
    <%if(i > 10){ %>
    <span>i > 10</span>
    <%}else{ %>
    <span>i <= 10</span>
    <%} %>
    
    </body>
    </html>
    Ps:Java代码和HTML代码交互式设计。
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%! int totalCount = 0; %>
    <% 
    		int localCount = 0;
    		totalCount ++;
    		localCount ++;
    %>
    <%
    		out.println(totalCount);
    		out.println("<br>");
    		out.println(localCount);
    %>
    
    </body>
    </html>

    Ps:选项d。刷新12次。

  7. JSP注释

  8. JSP内容输出表达式
  9. JSP包引入语法
  10. JSP - 起源、执行过程、运行原理、生命周期
  11. JSP内置对象
    a、简介
      - 请求与响应模式JSP内置对象。
        1.内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在牌本代码和表达式中随意使用。
        2.为什么要使用内置对象?
      - 作用域:pageContext,request,session,aplication。
    b、request、out、response对象应用
      - request:封装了由WEB浏览器或其它客户端生成地HTTP请求的细节(参数,属性,头标和数据)。
      - request作用域:用户的请求周期。
      - out:代表输出流的对象。
      - response:封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。
    c、pageContext、page对象应用
    d、session、config、exception对象应用
    e、aplication对象应用
  12. out 对象

  13. request 对象
    a、作用域
      - request作用域在相邻两个web资源之间共享同一个。
      - request请求对象时使用。

    Ps:13 line 针对绑定在哪个*.jsp上有效。

  14. response 对象
  15. pageContext 对象
      - pageContext:提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法。
    <!-- index.jsp -->
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    	<!-- 
    		pageContext的作用:
    		1、forward方法来完成请求的转发
    		2、include方法
    		3、pageContext可以来获取其他的内置对象。getRequest,getSession....
                    4、作用域在当前页面
    	 -->
    	 
    	<%
    		//pageContext.include("header.jsp");
    		pageContext.forward("a.jsp?name=imooc");
    	%>
    
            <%
                    pagecontext.setAttribute("age",12);
            %>
            <br/>
            pageContext作用域中获取的值:<%=pageContext.getAttribute("age")%>
    
    </body>
    </html>
    <!-- a.jsp -->
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    	<%= pageContext.getRequest().getParameter("name") %>
    </body>
    </html>



  16. page 对象
      - page:代表了正在运行的由JSP文件产生的类对象。
      - page作用域:当前执行页面。

  17. session 对象
    a、session:主要用于跟踪会话什么是会话?(作用域:会话期间)
    A:会话是代表用户第一次进入当前系统直到退出系统或关闭浏览器,在此期间与服务器的一系列交互。
    b、设置session有效时间的方法:
    session.setMaxInactiveInterval(int second)参数为秒如果设置session有效时间为5分钟,则为:session.setMaxInactivelnterval(5*60)。
    c、API:setAttribute().../getAttribute()...

  18. config 对象(获取配置信息)
    web.xml

    login.jsp

    效果图


  19. exception 对象(异常对象)
    <%@ page language="java" contentType="text/html; charset=UTF-8" errorPage="error.jsp"
        pageEncoding="UTF-8" import="com.imooc.db.*,com.imooc.bean.*,java.util.*"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Insert title here</title>
    </head>
    <body>
            //...
    	<%
    		}else{
    			throw new Exception("账号和密码错误");
    		}
    	%>
    </body>
    </html>
     
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" isErrorPage="true"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<!-- 
    		1、exception对象只能在错误页面页面中使用,page加入一个属性 isErrorPage="true"(default:false)
    		2、有一个页面出现了异常,在页面中指定一个错误处理的页面,page指令当中,errorpage来指定。
    	 -->
    	<%= exception.getMessage() %>
    </body>
    </html>

  20. application 对象
      - application:提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式。
      - application作用域:web容器的生命周期(即:服务器开启时,application生命周期就开始,直到服务器关闭为止)。


  21. JSP 报错问题:
    1、“String cannot be resolved to a type” :如果是在导入的项目的情况下,多数情况下就是jdk版本与项目的jdk版本不匹配,解决方法:右击工程->Build Path->Configure Build Path->Libraries,双击JRE System Library,如果出现红叉,表示没有选择JRE,这是需要选中对应的JDK,里面包括JRE。这样就OK了。 
  22. JavaWeb - JSP、Servlet、Request、Response、Get、Post 中文乱码问题
  23. 安全访问:避免让用户直接访问(即使手动在路径上加上“WEB-INF”也是没用的,依旧404)(在Servlet里控制WEB-INF路径是有效的)详情:JavaWeb - 访问 WEB-INF 资源几种方式
  24. JSP 共享配置(如:绝对路径)
    // common.jsp
    
    <%
      String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
      request.setAttribute("basePath", basePath);
    %>

  25. 待更新...
在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆氪和他的那些代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值