JSP_关于?url=xxx.jsp的用法
解释:
待理解
例子:
开始:
ListTopicServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");//解决网页输出的乱码问题
TopicService ts=new TopicServiceImpl();
List<Topic> list=ts.ListTopics();//调用逻辑层的ListTopic方法,返回所有的Topic对象
HttpSession session=request.getSession();
session.setAttribute("ListTopics", list);
response.sendRedirect("newspages/topic_list.jsp");
}
当jsp文件直接使用response.sendRedirect("/PressReleaseSystem/ListTopicServlet");
时,会直接跳转至servlet文件,并进行newspages/topic_list.jsp路径的跳转。
改变:
ListTopicServlet.java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");//解决网页输出的乱码问题
TopicService ts=new TopicServiceImpl();
List<Topic> list=ts.ListTopics();//调用逻辑层的ListTopic方法,返回所有的Topic对象
//设一个url,从jsp获取
String url=request.getParameter("url");
HttpSession session=request.getSession();
session.setAttribute("ListTopics", list);
response.sendRedirect("/PressReleaseSystem/"+url);
}
top_list.jsp
<%
List<Topic> listTopics=(List<Topic>)session.getAttribute("ListTopics");
if(listTopics==null){
response.sendRedirect("/PressReleaseSystem/ListTopicServlet?url=newspages/topic_list.jsp");
return;
}
%>
news_add.jsp
<%
List<Topic> listTopics=(List<Topic>)session.getAttribute("ListTopics");
if(listTopics==null){
response.sendRedirect("/PressReleaseSystem/ListTopicServlet?url=newspages/topic_list.jsp");
return;
}
%>
这里在前面定义了一个字符串url (url从jsp页面获取),在项目名PressReleaseSystem后面添加了 +url ——这里将网页的跳转变得改造的更加灵活。
因此,在news_add.jsp和top_list.jsp内部可以直接使用 “/项目名/servlet服务?url=文件夹/对应的.jsp” ,来达到灵活跳转的目的。
ps:感谢大佬的指教!