Action中怎么输出jsp代码到页面

例如我在Action中要直接把一段jsp代码输出到页面上,除此之外不需要跳转到任何页面,代码中包括<%=request.getAttribute("abc")%>这样的,... 例如我在Action中要直接把一段jsp代码输出到页面上,除此之外不需要跳转到任何页面,代码中包括 <%=request.getAttribute("abc")%> 这样的,而不是单纯的html。我刚刚用response.getWriter().write()试过,变成直接输出所有字符了,上面那种代码都没变。
例如我在Action中使用了request.setAttribute("abc","123"),又想在页面中显示123,于是在产生的代码中使用了<%=request.getAttribute("abc")%>,但是之前试过的方法不行,这句还是这句,没有想要的变化。
我举这个例子也不太好,只想要内容的话倒是可以直接输出123算了,就是在想如果有<% %>括起来的java代码,能输出到页面并像真正的jsp那样当作java代码处理吗?
展开
 我来答
菏职面对面E4
推荐于2016-05-30 · TA获得超过651个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:110万
展开全部
 1、一般是在Action中定义一个成员变量,然后对这个成员变量提供get/set方法,在JSP页面就可以取到这个变量的值了。
  1)在Action中定义成员变量
//定义一个成员变量
private String message;

//提供get/set方法
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}

  2)在JSP页面中取值
${message}
或者
<s:property value="message"/>

  2、但是定义的成员变量多了,感觉整个Action的代码就很长了。这个时候可以使用一些Servlet API进行值的存取操作:HttpServletRequest、HttpSession和ServletContext。Struts2对这个三个对象用Map进行了封装,我们就可以使用Map对象来存取数据了。
  1)在Action中存值
ActionContext actionContext = ActionContext.getContext();

//get HttpServletRequest
Map<String,Object> request = (Map) actionContext.get("request");
request.put("a", "a is in request");

//get HttpSession
//Map<String,Object> session = (Map) actionContext.get("session");
Map<String,Object> session = actionContext.getSession();
session.put("b", "b is in session");

//get ServletContext
//Map<String,Object> application = (Map) actionContext.get("application");
Map<String,Object> application = actionContext.getApplication();
application.put("c", "c is in application");

  2)在JSP页面上取值
${a}
${b}
${c}
or
${requestScope.a}
${sessionScope.b}
${applicationScope.c}
兰飞之恋34
推荐于2018-03-20
知道答主
回答量:10
采纳率:0%
帮助的人:9.3万
展开全部
值栈。在action中:this.addErrorfield("YourID","内容");在Jsp中:<s:property value="errors.YourID[0]" />可能会有关于引号的疑问,自己想办法解决。告诉你这个用法,你可以利用值栈变一下你解决问题的方法。也许就不需要<%=request.getAttribute("abc")%>
----------------------------------------------------------------------------------------------------------
1.jsp获取后台的值。通过值栈,或者通过在后台中添加一个变量,然后通过result再通过request取得(绕了一个弯子)
2.获取后台传过来的jsp代码,也可以通过值栈。
具体要看你的需求。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TTT唐唐TTT
2012-06-01 · TA获得超过244个赞
知道小有建树答主
回答量:227
采纳率:100%
帮助的人:89.2万
展开全部
用response.getWriter().print("内容");不行吗
看你补充的也是有点不明白你到底是想干什么?
如果是页面之间的传值,我想你也不会问;
难道说你是想把<%=request.getAttribute("abc")%>这段代码传给jsp页面?

但是你上面说不跳转页面,我认为就是在action中显示内容了吧?
这样的话就很简单了,String abc=request.getAttribute("abc");
PrintWriter out = response.getWriter();
out.print(abc);
不知道这样有没有猜中你的问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
死亡幽谷
2012-06-01 · TA获得超过248个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:136万
展开全部
你既然都说了是action了.action里的属性输出不是太困难呀,且他也有很简单的输出方法啊比如:你在action里写上abc和他的getter和setter方法,然后在页面用${abc}.就可以了呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑煤小贵
2012-06-01 · 贡献了超过111个回答
知道答主
回答量:111
采纳率:0%
帮助的人:26.6万
展开全部
你是Struts2 吧?要是的话.Struts2 有一个valueStack机制,你在网上查查
取值使用<s:property value="#request.abc"/>
这样就可以取到123了 ,使用<%=%>这种方式也可以取的,应该是<%=${request.abc}%>
你试试,如果成功了,我再告诉你为什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式