JSP基础

1、指令标签
<%@ page %> page指令标签:声明当前jsp页面的编码格式,文本类型,编写语言和需要导入的类文件
import属性为导入相关类文件,每个类文件用,隔开
errorPage属性指明当页面中出现Java异常时跳转到某个页面, errorPage="err.jsp"
session="true/false" 表示当前JSP页面是否可以使用Session会话对象


<%@ include file="" %>
表示动态地引用一个文件,如果是纯html页面,则直接copy到主页面中
如果其中还包含有java代码,加载到主页面中后java代码会被编译
被包含的页面中不需要出现主页面中已经有的不重复出现的html标签,只需要写放在body标签内的内容

2、Java程序片断
<%
%>
不能在程序片断内定义方法, 包含在此标签内部的代码最终会放在由JSP转化的servlet java文件的_jspService方法内部,
所以此处不能定义方法,定义的变量为局部变量

<%!
%>
变量和方法定义标签,变量在多个线程间共享,变量和方法只在当前一个页面有效
最好使用<% %>
变量作为Servlet的成员变量,方法为成员方法

3、对变量进行输出
1)使用out.write .print
2)使用<%=变量名或方法名 %>, 也可以直接对集合类型进行输出,不需要加分号

4、注释
html: <!-- -->
Java:
<%
/**
*/
%>
<%-- --%>

5、JSP动作指令
<jsp:include> 表示动态地包含另外一个文件,并且可以用<jsp:param>给被包含的文件传递参数
在被包含的文件中使用request.getParameter方法获取传递过来的参数

jsp:include指令每次都动态地加载页面,所以页面有修改,也能被及时重新编译

<jsp:forward>指令用于在WEB容器内部进行JSP页面的转发,由一个JSP页面转发到另外一个JSP页面
并且可以使用jsp:param指令传递参数给转发到的页面,在转发到的页面中通过request.getParameter方法获取传递过来的参数

<jsp:plugin>用于运行applet小应用程序,也可以使用jsp:param传递参数

<jsp:useBean>可以引用Bean对象
1)<jsp:useBean id="" class="" /> id表示Bean对象的名称,在setProperty和getProperty中用此id来表示某个Bean对象
2)<jsp:setProperty name="" property="" value="" /> name表示哪个Bean对象,引用useBean里的id,
property表示bean对象中的某个属性名称, value即为该对象指定的property的值
3)<jsp:getProperty name="" property="" />

并且setProperty和getProperty可以不在useBean使用
useBean所产生的对象放在pageContext页面上下文中

6、login.jsp-home.jsp
1)、当在浏览器输入login.jsp,页面会执行以下java片断
String name = request.getParameter("n");
if (name != null && !name.equals("")) {


由于request.getParameter("n") 没有n参数传递过来,所以name为null,
所以 不会进行转发操作,接着就显示下面的表单
2)、显示表单后,当点击表单提交按钮,提交到本页面,则会执行以下Java片断
String name = request.getParameter("n");
if (name != null && !name.equals("")) {

此时的request.getParameter("n") 有n参数传递过来,所以name不为空
所以满足转发的条件,则调用jsp:forward转发到home.jsp

3)、由login.jsp转发到home.jsp时,使用jsp:param指定了转发参数,所以 home.jsp可以通过
request.getParameter方法获取到转发参数

备注:使用转发,是在WEB容器内部完成JSP页面的切换,客户端看不到地址栏URL的变化

7、http请求的状态响应
1)正常响应 status code (状态码): 200
2) 重定向一个页面: 302
3)内部服务器错误(java代码异常):500, 如何处理此错误? 使用page指令的errorPage属性
4)请求的资源不存在:404

原文地址:https://www.cnblogs.com/A0926/p/5443780.html