javaweb之request获取referer请求头实现防盗链 .
http://blog.csdn.net/mustbehard/article/details/20786551
2014-03-08 16:44 4199人阅读 评论(0) 收藏 举报
.
分类:
自己用(137)
.
[java] view plain copy
01.package test.request;
02.
03.import java.io.IOException;
04.
05.import javax.servlet.ServletException;
06.import javax.servlet.http.HttpServlet;
07.import javax.servlet.http.HttpServletRequest;
08.import javax.servlet.http.HttpServletResponse;
09.
10.//利用referer请求头实现防盗链
11.public class RequestDemo8 extends HttpServlet {
12.
13. public void doGet(HttpServletRequest request, HttpServletResponse response)
14. throws ServletException, IOException {
15. // 获取请求是从哪里来的
16. String referer = request.getHeader("referer");
17. // 如果是直接输入的地址,或者不是从本网站访问的重定向到本网站的首页
18. if (referer == null || !referer.startsWith("http://localhost")) {
19. response.sendRedirect("/day06/index.jsp");
20. // 然后return,不要输出后面的内容了
21. return;
22. }
23. String date = "日记";
24. response.getWriter().write(date);
25. }
26.
27. public void doPost(HttpServletRequest request, HttpServletResponse response)
28. throws ServletException, IOException {
29. doGet(request, response);
30. }
31.
32.}
struts之Action中获取request、response对象的方法
1、访问或添加request/session/application属性
public String scope() throws Exception{
ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app
ctx.getSession().put("ses", "session范围");//往session里放入ses
ctx.put("req", "request范围");//往request里放入req
return "scope";
}
JSP:
<body>
${applicationScope.app} <br>
${sessionScope.ses}<br>
${requestScope.req}<br>
</body>
2、获取HttpServletRequest/HttpSession/ServletContext/HttpServletResponse对象
方法一、通过ServletActionContext类直接获取:
public String rsa() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
ServletContext servletContext = ServletActionContext.getServletContext();
request.getSession();
HttpServletResponse response = ServletActionContext.getResponse();
return "scope";
}
方法二、实现指定接口,由struts框架运行时注入:
public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware{
private HttpServletRequest request;
private ServletContext servletContext;
private HttpServletResponse response;
public void setServletRequest(HttpServletRequest req) {
this.request=req;
}
public void setServletResponse(HttpServletResponse res) {
this.response=res;
}
public void setServletContext(ServletContext ser) {
this.servletContext=ser;
}
}
代码
复制代码
package com.ljq.action;
import java.util.Arrays;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class HelloWorldAction {
//在页面中采用以下el表达式输出
//第一种
//${applicationScope.app}
//${sessionScope.ses}
//${requestScope.req}
//第二种
//${app}
//${ses}
//${req}
public String list() {
ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("app", "应用范围");// 往ServletContext里放入application
ctx.getSession().put("ses", "session范围");// 往session里放入session
ctx.put("req", "request范围");// 往request里放入request
ctx.put("names", Arrays.asList("张三", "李四", "王五"));
return "message";
}
//在页面中采用以下el表达式输出
//第一种
//${applicationScope.app}
//${sessionScope.ses}
//${requestScope.req}
//第二种
//${app}
//${ses}
//${req}
public String get() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
ServletContext servletContext = ServletActionContext.getServletContext();
request.setAttribute("req", "请求范围属性");
request.getSession().setAttribute("ses", "会话范围属性");
servletContext.setAttribute("app", "应用范围属性");
// HttpServletResponse response = ServletActionContext.getResponse();
return "message";
}
}
jsp代码
${applicationScope.app} <br>
${sessionScope.ses}<br>
${requestScope.req}<br>
===========<br/>
${app} <br>
${ses}<br>
${req}<br>
===========<br/>
<c:forEach items="${names}" var="name">
${name }<br/>
</c:forEach>
分类: struts2
标签: struts2 action中获取request、respon对象