`

RequestContext

 
阅读更多
package util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class RequestContext
{
    private ServletContext servletContext;

    private HttpSession session;

    private HttpServletRequest request;

    private HttpServletResponse response;

    private final static ThreadLocal<RequestContext> context = new ThreadLocal<RequestContext>();

    protected static RequestContext begin(ServletContext servletContext, HttpServletRequest req, HttpServletResponse res)
            throws UnsupportedEncodingException
    {
        RequestContext rc = new RequestContext();
        rc.servletContext = servletContext;
        req.setCharacterEncoding("UTF-8");
        rc.request = req;
        rc.response = res;
        rc.session = req.getSession();
        context.set(rc);
        return rc;
    }

    protected void end()
    {
        this.servletContext = null;
        this.request = null;
        this.response = null;
        this.session = null;
        context.remove();
    }

    protected static ServletContext getServletContext()
    {
        return context.get().servletContext;
    }

    protected static HttpSession getSession()
    {
        return context.get().session;
    }

    protected static HttpServletRequest getRequest()
    {
        return context.get().request;
    }

    protected static HttpServletResponse getResponse()
    {
        return context.get().response;
    }

    protected static void redirect(String url)
    {
        try
        {
            HttpServletRequest request = getRequest();
            String basePath = getRequest().getScheme() + "://" + request.getServerName() + ":"
                    + request.getServerPort() + request.getContextPath() + "/";
            context.get().response.sendRedirect(basePath + url);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    protected static void forward(String url)
    {
        RequestDispatcher rd = getRequest().getRequestDispatcher(url);
        try
        {
            rd.forward(getRequest(), getResponse());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    protected static void invalidate()
    {
        RequestContext.getSession().invalidate();
    }
}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    对django中render()与render_to_response()的区别详解

    最明显的就是前者会自动使用RequestContext,而后者需要coding进去, 例如: render(request,'share.html', {'registAdd': registAdd}) render_to_response('share.html',{'registAdd':registAdd},context_...

    【ASP.NET编程知识】剖析ASP.NET MVC的DependencyResolver组件.docx

    public virtual IController CreateController(RequestContext requestContext, string controllerName) { //获取 Controller 的类型 Type controllerType = GetControllerType(requestContext, controllerName); ...

    上下文应用

    8. **自定义RequestContext**:开发者可能需要根据项目需求定制自己的RequestContext,扩展标准功能,以满足特定的业务逻辑。 通过这些知识点的学习,开发者能够更深入地理解上下文的应用,提高在实际项目中的问题...

    primefaces dialog 根據判斷才打開1

    RequestContext context = RequestContext.getCurrentInstance(); context.execute("PF('confirmDialog').show();"); } } ``` 在这段Java代码中,`RequestContext`是PrimeFaces提供的一个实用类,它可以用来在...

    红薯大大写的,一个文件实现简单的mvc框架,非常值得学习

    void xxx(RequestContext ctx, String...args) * 支持任意类型的返回值 * 1. void - 默认不继续执行模板 * 2. boolean - 根据返回值来决定是否继续执行模板 * 3. other - 返回的对象直接输出到response,然后...

    谷歌浏览器chorme示例源码c#

    【谷歌浏览器Chromium示例源码C#】是基于C#实现的一个强大的浏览器开发框架,主要利用了开源项目CefSharp。CefSharp是Chromium Embedded Framework (CEF)的.NET封装,它允许开发者在Windows Forms或WPF应用程序中...

    Python库 | oslo.context-2.22.1.tar.gz

    RequestContext可以通过调用`oslo_context.context.RequestContext()`创建,并在处理请求时进行初始化。 2. **上下文管理器(Context Manager)**:库中包含了上下文管理器,使得在with语句中可以方便地管理上下文...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_7_国际化 共9页.pptx

    RequestContext requestContext = new RequestContext(request); model.addAttribute("test_message", requestContext.getMessage("testmsg")); return "user/create"; } ``` 在视图模板中,可以通过`${test_...

    asp.net URL 重写 例子

    public IHttpHandler GetHttpHandler(RequestContext requestContext) { string category = requestContext.RouteData.Values["category"].ToString(); string id = requestContext.RouteData.Values["id"]....

    MVC创建一个基于Unity的ControllerFactory

    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) { if (controllerType == null) return base.GetControllerInstance(requestContext, controller...

    dws.rar_dws

    10. `JspAwareRequestContext.class`: 这个类可能扩展了`RequestContext`,添加了对JSP(JavaServer Pages)的特殊支持,如提供访问JSP标签库、EL表达式等的能力。 综合以上分析,这个压缩包包含了一个基于Spring ...

    MVC学习资料

    var requestContext = filterContext.RequestContext; var routeData = requestContext.RouteData; var dataTokens = routeData.DataTokens; if (dataTokens["area"] == null) dataTokens.Add("area", ""); ...

    python+django加载静态网页模板解析.docx

    from django.template import RequestContext def index(request): return render(request, 'index.html') ``` - 对于Django 1.x版本,代码如下: ```python from django.shortcuts import render_to_...

    java 文件上传

    RequestContext requestContext = new ServletRequestContext(request); // 判断表单是否是Multipart类型的。这里可以直接对request进行判断,不过已经是过时的用法了 if (FileUpload.isMultipartContent...

    在JAX-WS 中实现多个WebService间会话保持

    List&lt;SOAPHeaderElement&gt; headers = (List) requestContext.get(MessageContext.OUTBOUND_SOAP_HEADERS); headers.add(header); // 调用服务操作 port.someOperation(); } ``` 这里,`BindingProvider.SESSION...

    JAVA后端高级工程师面试题

    通过RequestContext获取Controller名,反射创建Controller实例,执行对应Action。路由机制确保了URL与应用逻辑的对应关系。 三、系统技术选型: 1. 客户端:BS客户端使用MVC框架,如ASP.NET MVC 5.0,CS客户端使用...

    C# cefsharp 多账号同时登陆,设置cookie隔离,修改部分浏览器指纹

    browserInstance.SetRequestContext(requestContext); ``` **三、修改浏览器指纹** 浏览器指纹是网站用来识别独特用户的标志,包括浏览器版本、分辨率、插件信息等。为了提高匿名性,我们可能需要改变一些浏览器...

    C# ASP.NET - 使用URL路由的简单范例

    public IHttpHandler GetHttpHandler(RequestContext requestContext) { // 在这里执行自定义逻辑 // ... // 返回处理请求的IHttpHandler实例 return new PageHandler(requestContext); } } public class ...

    静态页面技术

    public IHttpHandler GetHttpHandler(RequestContext requestContext) { string bookId = requestContext.RouteData.Values["bookId"].ToString(); string filePath = $"~/StaticPages/book_{bookId}.html"; /...

    EOS常见问题与解答 .docx

    解决这个问题的关键在于理解EOS中的数据总线机制,包括requestContext、bizContext和sessionContext的生命周期、作用范围以及它们与XPath的关系。通过查看日志文件或使用调试工具,可以精确地定位并解决问题。 其次...

Global site tag (gtag.js) - Google Analytics