zoukankan      html  css  js  c++  java
  • jsp

    首先什么是jsp

    HTML不能够查询数据库,Java 代码却访问数据库。因此,在 HTML 代码中间混合 Java 代码,就能够让网页拥有动态的功能。而嵌入了 Java代码的网页,就是 JSP。

    页面效果,用 JavaScript 也能够实现,有何区别?
    最大的区别是:JavaScript 源代码是被服务器发送到客户端,由客户端执行,因此,客户端可以看到 JavaScript 源代码;而 Java 代码却不会。

    jsp用法

    <% Java代码 %>  

    那我们要用的话知道这几个就可以了

    中文编码问题

    如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:

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

    JSP声明

    <%! int i = 0; %> 

    JSP表达式

    <%= 表达式 %>

    比如

    <form action="<%= path %>/yang/control/HandleLogin" method="post">

    这个path是相对路径的。,怎样得来在JSP元素中(见下)会讲解

    JSP指令

    <%@ page ... %>    定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    <%@ include ... %>    包含其他文件
    <%@ taglib ... %>    引入标签库的定义,可以是自定义标签

    比如

    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8"%>
    <%@ include file="navbar.jsp" %>

    还有重要的

    JSP行为:记住是以JSP开头

    jsp:include    用于在当前页面中包含静态或动态资源
    jsp:useBean    寻找和初始化一个JavaBean组件
    jsp:setProperty    设置 JavaBean组件的值
    jsp:getProperty    将 JavaBean组件的值插入到 output中
    jsp:forward    从一个JSP文件向另一个文件传递一个包含用户请求的request对象
    jsp:plugin    用于在生成的HTML页面中包含Applet和JavaBean对象
    jsp:element    动态创建一个XML元素
    jsp:attribute    定义动态创建的XML元素的属性
    jsp:body    定义动态创建的XML元素的主体
    jsp:text    用于封装模板数据

    比如

    <jsp:useBean id="loginBean" class="yang.entity.Login" scope="session"/>
     //有了这个bean就可以后面用Id使用,有点像spring的注入
    <%   
                 LinkedList<String> items = null;
                  items = loginBean.getCar(); 

    有了上面这些语法基础,

    下面就可以看看JSP的组成--JSP元素

    也就是

    JSP隐含对象

    request    HttpServletRequest类的实例
    response    HttpServletResponse类的实例
    out    PrintWriter类的实例,用于把结果输出至网页上
    session    HttpSession类的实例
    application    ServletContext类的实例,与应用上下文有关
    config    ServletConfig类的实例
    pageContext    PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
    page    类似于Java类中的this关键字
    Exception    Exception类的对象,代表发生错误的JSP页面中对应的异常对象

    看了上面这幅图,看看下面这个实例(也就是上面path的由来)
    <%
      String path = request.getContextPath();
    //request.getContextPath() //可返回站点的根路径。也就是项目的名字   String basePath
    = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
    //以我们常见的为例子,http://localhost:8080/ssm/index
    //request.getScheme() 返回当前链接使用的协议;比如,一般应用返回http;SSL返回https;

    //request.getServerName()是主机名如localhost
    运用:
    <meta http-equiv="refresh" content="3; url=<%= path %>/index.jsp">

    其实就是servlet那里讲解过的调用了httpServletRequest的方法即req。

    而getScheme在servletRequest(HttpServletRequest的父类)里面

    常见的很多如

    request.getParameter("currentPage") != null

     所以就是jsp和servlet能配合的原因吧

    看完request基本就能了解reponse

    那再看一个常用的out

    既然out是printWriter类型(就是一个输出用的,写进去然后输出出去)

    根据我们知道的PrintWriter可以直接调用write()或print()方法,把字符串作为参数写入

    write():仅支持输出字符类型数据,字符、字符数组、字符串等

    print():可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出

    因此传输数据时,write,print都可以使用,print可以写入对象,而write不行

    就能基本运用,就想一个sout一样

    这就是基本项目中我用到过的jsp基础运用

    至于JSTL即JSP的标签,至少我写练手项目没怎么用,也懒得去记和用哪些标签,基本的功能这些语法都能实现。实在不行就上js和java控制逻辑,不用框架的前期简单javaweb基本都能搞定
    框架又在用thymeleaf模板引擎。难搞
  • 相关阅读:
    【MyBatis】STDOUT_LOGGING和log4j日志
    【MyBatis】resultType与类的字段不同解决办法
    【MyBatis】SqlSession相关的生命周期及作用域
    【MyBatis】XML配置的官网说明
    【Junit】程序员都应会的白盒测试
    【MyBatis】增删改查语句入门
    【MyBatis】我的mybatis第一个程序
    【网络】HTTP知识点(1)
    InitializeComponent报错(提示不存在)
    leetcode 860柠檬水找零问题
  • 原文地址:https://www.cnblogs.com/yangj-Blog/p/12979979.html
Copyright © 2011-2022 走看看