您的位置:首页 > Web前端 > JavaScript

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

2017-12-20 20:36 399 查看

“JSP——500错误”的续集

http://blog.csdn.net/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中有内容了
4000
,那你是没错的,至少数据处理这里没问题的。

问题原因:

问题出在像上面那样直接访问这个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实现(未验证,该问题未完待续!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐