关于“servlet中有内容,但jsp中无内容”的思考

“JSP——500错误”的续集

http://blog.youkuaiyun.com/gxx_csdn/article/details/78800621

之前在解决了jsp——500错误之后,有个问题困扰了我好久,即:
访问”http://localhost:8080/相应的servlet的名字”可以看到从数据库中查询的内容,而且无误,
但是访问”http://localhost:8080/相应的jsp的名字”这个jsp页面(不是index.jsp)却什么都没有,
然而有时候问题的解决就靠的是某一瞬间脑子的灵光,
现整理如下,希望能对你的问题的解决提供一点帮助和思路。

通过在网上查了好多资料,发现出现这种情况大致的解决思路有三种(假设相关配置没有问题):
1. 没从数据库中取到值。
(显然在这里这种情况是排除的,因为访问servlet可以看到内容,而且后台也可以正确打印)
2. 在servlet中,request没有把内容转发到相应的jsp,即需要:

request.setAttribute("newsList", newsList);
request.getRequestDispatcher("showNews.jsp").forward(request, response);

(显然在这里这种情况也是排除的,因为我写了这个代码=.=,其中newsList就是从数据库中查询到的数据)
3. 在jsp页面中没有正确获取到对象值,即需要:

<%
ArrayList<JSONObject> list = (ArrayList<JSONObject>)request.getAttribute("newsList");
下面省略.....在"JSP——500"一文中有相关代码
%>

(显然在这里这种情况也是排除的,因为我也写了这个代码=.=)

引发的思考

之前在网上找相关问题的解决办法时,发现像我这种摸不着头脑、完全找不到问题所在的情况真的好多,
但是大部分关于该问题的解决基本就是上述三种思路,如果你还是解决不了,
那,是否思考过这样一件事情:servlet和jsp到底是什么关系呢?

我的理解:
servlet是数据来源(当然数据获取可以再进行封装,写到一个类中,这样代码更整洁有序),当它获取到数据后把结果返回,
而之后数据显示的事情就由jsp页面来做,可以在jsp中写各种html标签并显示数据,
这样可以把数据获取和数据显示分离,
所以其实只要servlet中有内容了,那你是没错的,至少数据处理这里没问题的。

问题原因:
问题出在像上面那样直接访问这个jsp(不是index.jsp)这种行为本身是错的,
(当我把代码调出的那一刻,才发现自己之前好傻=.=,)
因为真正需要访问的这个servlet,
jsp就像是servlet的躯壳,毕竟jsp的全称是Java Server Page,而servlet是灵魂,
没有躯壳的灵魂将无法安置,没有灵魂的躯壳则毫无意义。
此外,重要的一点是servlet去处理数据这个动作是需要有外界触发的,
通常提交表单就可以达到这个目的,比如:

    <form action="queryServlet" method="POST">
        <input type="text" name="submit" size="50" autofocus required="required">
        <input type="submit" value="搜索一下">
    </form>

action=”进行相关处理的servlet的名字”,这样就可以了。

进一步的思考:
想要在访问这个jsp页面(不是index.jsp)时就直接显示相应内容,
可以通过ajax实现(未验证,该问题未完待续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值