java - Why I can not get the jsp thought its path? -


i use struts in java ee project:

in loading.jsp if use below src, 404 error:

<iframe src="${pagecontext.request.contextpath}/web-inf/page/menu/alermdevice.jsp" name="dev" id="dev" frameborder="0" width="500" scrolling="auto" height="400"> </iframe> 

but if use below src:

<iframe src="elecmenuaction_alermdevice.do" name="dev" id="dev" frameborder="0" width="500" scrolling="auto" height="400"> </iframe> 

i correct information.

this struts.xml:

<?xml version="1.0" encoding="utf-8"?> <!doctype struts public     "-//apache software foundation//dtd struts configuration 2.3//en"     "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>      <constant name="struts.devmode" value="true"></constant>     <constant name="struts.ui.theme" value="simple"></constant>     <constant name="struts.action.extension" value="do"></constant>      <package name="system" namespace="/system" extends="struts-default">         <action name="electextaction_*" class="electextaction" method="{1}">             <result name="save">/system/textadd.jsp</result>         </action>         <action name="elecmenuaction_*" class="elecmenuaction" method="{1}">             <result name="menuhome">/web-inf/page/menu/home.jsp</result>             <result name="title">/web-inf/page/menu/title.jsp</result>             <result name="left">/web-inf/page/menu/left.jsp</result>             <result name="change">/web-inf/page/menu/change.jsp</result>             <result name="loading">/web-inf/page/menu/loading.jsp</result>             <result name="logout" type="redirect">index.jsp</result>             <result name="alermstation">/web-inf/page/menu/alermstation.jsp</result>             <result name="alermdevice">/web-inf/page/menu/alermdevice.jsp</result>         </action>     </package> </struts> 

why use path can not access jsp? use action can yet?

the web server cannot resources , below web-inf folder. when action invoked returns response execution of result. it's used result type dispatcher used default forward request specified url (the requested jsp page).

dispatcher result

includes or forwards view (usually jsp). behind scenes struts use requestdispatcher, target servlet/jsp receives same request/response objects original servlet/jsp. therefore, can pass data between them using request.setattribute() - struts action available.

there 3 possible ways result can executed:

  • if in scope of jsp (a pagecontext available), pagecontext's pagecontext#include(string) method called.

  • if there no pagecontext , we're not in sort of include (there no "javax.servlet.include.servlet_path" in request attributes), call requestdispatcher#forward(javax.servlet.servletrequest, javax.servlet.servletresponse) made.

  • otherwise, requestdispatcher#include(javax.servlet.servletrequest, javax.servlet.servletresponse) called.


when servlet dispatcher invoked has not such restriction , can return resource same response requested.


Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -