jsp

Posted 时间管理者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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模板引擎。难搞

以上是关于jsp的主要内容,如果未能解决你的问题,请参考以下文章

JSP基础

day06-jsp

jsp

JSP语法

JSP 语法

JSP 基础语法