您的位置:首页 > 编程语言 > Java开发

java_SSH继续充电_struts2_第一天

2015-11-23 12:17 621 查看
Action访问servletAPI,获取Map类型的servlet元素

1,取得Map类型的request,session,application:

private Map<String ,Object> request;

pirvate Map<String,Object> session;

private Map<String ,Object> application;

this.request=(Map)ActionCOntext.getContext().get("request");

this.application=ActionContext.getContext().getApplication();

this.request.put("reqAttr","reqDirect");

this.session.put("sessionAttr","sessionAttr");

this.application.plut("applicationAttr","aapplicationAttr");

this.session=ActionContext.getContext().getSession();

jsp:访问通过EL:reqAttr:${requestScope.reqAttr} ssessionAttr:${sessionScopoe.ssessionAttr} application:${applicationScope.applicatgionAttr}

2,通过IOC,DI获取

通过注入方式实现接口:requestAware,SessionAware,applicatioinAware

首先实现其方法:public void setRequest(Map<String,Object> request){

this.request=request;

}

public void setSession(Map<String,Object> session){

this.session=session;

}

public void setApplication(Map<String,Object> application){

this.application=application;

}

获取真实的servletAPI类型的servlet元素

privaete HttpServletRequset request;

prjivaet HttpSession session;

pirvaet HttpSevletResponse response;

private ServletContext application;

this.request=ServletActionCOntext.getRequest();

this.resposne=ServletActionCOntext.getResponse();

this.session=this.request.getSession();

this.application=ServletActionContext.getServletContext();

this.request.setAttrivute("reqttr",reqattr);

this.session.setAttribute("sessionAttr",sessionAttr);

this.application.setAttribute("applicationAttr","applicationAttr");

PrintWriter out=resposne.getWriter();

out.print("Hello Resposne");

out.flush();

out. close();

System.out.println("testActon");

return null;主要是针对ajax停止运行

控制反转:继承 ActionSupport 实现 servletRequestAware,ServletResposneAware,ServletContetxt

public void setServletRequest(HttpServletRequest request){

this.request=request;

}

public void setServletResponse(HttpServletResponset response){

this.response=response;

}

2,struts.xml总result类型:
dispatcher:forward方式,服务器端调整

redirect:客户端调整

chain:action转发,forward方式,服务器端跳转action

redirectAction:客户端跳转action

全局result:<global-results>

<result name="main">/index.jsp</result>

</global-results>


Redirect和Dispatcher 区别

使用forward是服务跳转,浏览器不知道它所请求的具体资源来源,浏览器的地址栏不会变;
使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。

request.getRequestDispatcher("test.jsp").forward(request, response);//转发到test.jsp
response.sendRedirect("test.jsp");//重定向到test.jsp

重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。

forward,转发页面和转发到的页面可以共享request里面的数据.
redirect,不能共享数据.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: