tomcat 或者 jsp 怎么实现301重定向
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat 或者 jsp 怎么实现301重定向相关的知识,希望对你有一定的参考价值。
是不是可以在web.xml添加代码实现 这样最好了 如果不能 在jsp里面加代码 是否也能实现 怎么写
在jsp发布容器中配置:可以利用Apache的mod_rewrite对URL进行重写或重定向。需要以下几步:
1、首先确保开启了mod_rewrite功能。
用文本编辑器打开Apache安装目录\\conf\\httpd.conf,找到“#LoadModule rewrite_module modules/mod_rewrite.so”这行,去掉前面的“#”;
继续查找“AllowOverride None”,修改为“AllowOverride All”;
然后,重启Apache即可。
2、在你需要URL重定向的网站根目录下放一个.htaccess文件,文件名是.htaccess,Windows下不能直接建立,你可以用记事本另存为。
3、在.htaccess中通过正则表达式重定向到需要的页面。示例如下:
将不带www的顶级域名301重定向到带www的域名
301重定向(或叫301跳转、301转向)是用户或搜索引擎蜘蛛向网站服务器发出访问请求时,服务返回的HTTP数据流中头信息(header)部分状态码的一种,表示本网址永久性转移到另一个地址。 参考技术A 在servlet里面跳转就是了,
request.getRequestDispatcher(“你要跳转的jsp页面”).forward(request,response)是转发,
response.sendRedirect("
你要跳转的jsp页面 ")是重定向
在 JSP 中重定向页面?
【中文标题】在 JSP 中重定向页面?【英文标题】:Redirect pages in JSP? 【发布时间】:2011-06-25 10:42:46 【问题描述】:我必须在jsp中设计几个页面。 点击第一页的提交按钮后,页面应该会自动重定向到第二页。
您能否提供一个快速示例或演示如何实现此功能的教程链接?
【问题讨论】:
为什么需要重定向?通常的做法是提交一个 servlet,该 servlet 转发(而不是重定向)到一个 jsp。 通过action参数以表单形式提交页面。 【参考方案1】:用return;
语句扩展@oopbase 的答案。
让我们考虑一个传统身份验证系统的用例,我们将登录信息存储到会话中。在每个页面上,我们都会检查活动会话,例如,
/* Some Import Statements here. */
if(null == session || !session.getAttribute("is_login").equals("1"))
response.sendRedirect("http://domain.com/login");
// ....
session.getAttribute("user_id");
// ....
/* Some More JSP+Java+HTML code here */
不过乍一看还不错;它有一个问题。如果您的服务器由于时间限制而会话过期并且用户试图访问该页面,如果您没有在try..catch
块中编写代码或每次都没有处理if(null != session.getAttribute("attr_name"))
,他可能会出错。
因此,通过添加return;
语句,我停止了进一步的执行并强制将页面重定向到某个位置。
if(null == session || !session.getAttribute("is_login").equals("1"))
response.sendRedirect("http://domain.com/login");
return;
请注意,重定向的使用可能因要求而异。现在人们不使用这样的认证系统。 (现代方法 - Token Based Authentication)这只是一个简单的示例,用于了解在何处以及如何放置重定向。
【讨论】:
【参考方案2】:您好:如果您需要对链接重定向到的位置进行更多控制,您可以使用此解决方案。
即。如果用户正在点击结帐链接,但您想将他/她发送到结帐页面,如果它已注册(登录)或注册 如果他/她不是,则页面。
你可以使用JSTL core LIKE:
<!--include the library-->
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
<%--create a var to store link--%>
<core:set var="linkToRedirect">
<%--test the condition you need--%>
<core:choose>
<core:when test="$USER IS REGISTER">
checkout.jsp
</core:when>
<core:otherwise>
registration.jsp
</core:otherwise>
</core:choose>
</core:set>
解释:与...相同
//pseudo code
if(condition == true)
set linkToRedirect = checkout.jsp
else
set linkToRedirect = registration.jsp
那么:在简单的 HTML 中...
<a href="your.domain.com/$linkToRedirect">CHECKOUT</a>
【讨论】:
【参考方案3】:This answer 还包含一个仅使用 jstl 重定向标签的标准解决方案:
<c:redirect url="/home.html"/>
【讨论】:
【参考方案4】:只需在包含提交按钮的<form>
的action
属性中定义目标页面即可。
所以,在page1.jsp
:
<form action="page2.jsp">
<input type="submit">
</form>
与问题无关,如果您需要做任何事情,JSP 是not 做生意的最佳场所。考虑学习servlets。
【讨论】:
【参考方案5】:<%
String redirectURL = "http://whatever.com/myJSPFile.jsp";
response.sendRedirect(redirectURL);
%>
【讨论】:
Scriplet 是一个非常糟糕的决定。 说好话比说坏话更有帮助。应该使用什么来代替 scriptlet? 这是我在谷歌搜索“redirect jsp”的第一个结果。对于那些寻找如何始终将一个页面重定向到另一个页面的人来说,这是正确的答案(例如映射 /index.jsp -> /myapp/index.jsp,将其放入 /index.jsp 并制作 redirectURL = “/myapp/index.jsp”)。康斯坦丁是正确的,这是重定向提交按钮的不好方法。按钮的正确方法是使用 提醒一下 - 这对我有用,但我必须删除return;
之后的所有换行符。它最终看起来像这样:response.sendRedirect(redirectURL);%>
(%>
之后甚至没有换行符)
其实我说得太早了。拥有response.sendRedirect(redirectURL);\nreturn;\n%>
也对我有用。以上是关于tomcat 或者 jsp 怎么实现301重定向的主要内容,如果未能解决你的问题,请参考以下文章