有时候我们在跳转的时候不想经过 action,想直接在jsp与jsp之间进行跳转。
一、两个jsp均在WebRoot下
这种jsp在跳转时比较简单,有以下几种方法:
1)<a href="test.jsp">测试</a>
2)window.location.href="test.jsp";
3 ) form表单提交:action=“跳转的页面”
二、当有一个jsp在WEB-INF下
不通过action来处理跳转,我想直接从test.jsp页面跳到WEB-INF下的test1.jsp页面怎么办呢?我们有时候会试试绝对路径的写法<%=request.getContext()=%>/WEB-INF/test1.jsp,但是还是不行。因为在WEB-INF底下web容器是不让你看见他的跳转路径的。直接跳转不行。所以我们可以用以下的方法来解决问题。
在web.xml里添加配置信息
<servlet>
<servlet-name>tiaozhuan</servlet-name>
<jsp-file>/WEB-INF/view/test1.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>tiaozhuan</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
配置好web.xml后再jsp中编写跳转路径
<a href="/Love/test1.jsp">测试页面跳转</a><!-- Love为我的项目名 -->
效果如下
点击跳转
这样我们就实现了jsp与jsp之间的跳转
建Web应用
这里使用IDEA构建Web应用
添加新的Tomcat
勾选上正确的Tomcat
选择Filsh
创建好目录如下
其自动生成的Web.XML文件如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
</web-app>
同时还生成了一个jsp文件,生成的jsp文件如下
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/7/5
Time: 22:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
$END$
</body>
</html>
配置应用首页
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
启动相关的应用
这样就完成了最基本的tomcat的部署
jsp的基本注释如下
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/7/5
Time: 22:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%-- 注释内容 --%>
$END$
</body>
</html>
对jsp的声明如下
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/7/5
Time: 22:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%!
// 声明一个整形变量
public int count;
// 声明一个方法
public String info(){
return "hello";
}
%>
$END$
<%
// 把count值输出后加1
out.println(count++);
%>
<%
// 输出info()方法后的返回值
out.println(info());
%>
</body>
</html>
访问的页面结果如下
jsp提供了一种简单的输出表达式
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2020/7/5
Time: 22:39
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%!
// 声明一个整形变量
public int count;
// 声明一个方法
public String info(){
return "hello";
}
%>
$END$
`<%=count++%>
<%=info()%>
</body>
</html>
这里对jsp有三个编译的指令
page指令位于jsp页面的顶端,一个jsp页面可以有多个page指令,page指令的语法为
<%@ page import="java.sql.*" %>
include指令可以将一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句。include命令既可以包含jsp页面也可以包含静态文本。编译指令语法如下:
<%@ include file="要导入的jsp页面或文本文件" %>
taglib指令用于引入一些特定的标签库,语法格式:
<%@ taglib prefix="tagPrefix" uri="tagLibraryURI" %>
如使用struts标签库:
<%@ taglib prefix="s" taglib="/struts-tags" %>
进行页面跳转的指令 如果转发的时候需要传递参数可以使用jsp:param</jsp:param>指令进行设置。 比如,访问index.jsp页面时自动转发至login.jsp,需要把username和password传递过去: index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:forward page="login.jsp">
<jsp:param value="yaopan" name="username" />
<jsp:param value="123456" name="password" />
</jsp:forward>
<%--mac上按住comment键(windows下按住ctrl键),再点击login.jsp forword以下的代码不会被执行 --%>
在login.jsp中可以使用getParameter方法获取传入的参数值:
<%
String name=request.getParameter("username");
String pwd=request.getParameter("password");
out.println(name);
out.println("<br>");
out.println(pwd);
%>
执行forword指令时用户请求的地址没有发生变化,页面内容被forward目标替代。
include指令用于包含某个页面,但不会导入被include页面的编译指令。可以通过param指令传递参数: 新建一个index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<jsp:include page="head.html"></jsp:include>
<jsp:include page="body.jsp">
<jsp:param value="#1d99f6" name="bgcolor"/>
</jsp:include>
</html>
body.jsp
有时候做单点登录的时候,或者sessionfilter的时候都有可能遇到jsp页面重定向,在网上搜也有好多资料,今天我也把这个知识点整理整理,以后用的着的话回头看看。
response.sendRedirect()?
在调用之前是不能有内容已经被实际输出到了客户端,如果有也会被清除。
该方法重定向的地址会在浏览器的地址栏看到地址的变化。
它是一种客户端跳转的方法。
sendredirect 是会有两次请求,首先发一个response到浏览器,然后浏览器收到这个response后再发一个requeset到服务器,服务器接收后发新的response给浏览器。现在拿到的request是新的,所以才会出现之前传的内容会是空的。要想传内容或者参数只能在url路径后面加参数例如:url地址?参数名称=参数值;
response.sendRedirect(“url地址?参数名称=参数值”)?
*请认真填写需求信息,我们会在24小时内与您取得联系。