有時候我們在跳轉的時候不想經過 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小時內與您取得聯系。