java_SSH继续充电_struts2_第一天

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,不能共享数据.








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值