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的主要内容,如果未能解决你的问题,请参考以下文章