开发者社区> 问答> 正文

如何在jsp应用程序中将servlet加载为首页来管理其他servlet

我想在简单的jsp应用程序中将servlet加载为首页。因此,我在此URL映射中添加了servlet。

<servlet>
    <servlet-name>StudentController</servlet-name>
    <servlet-class>com.stu.controller.StudentController</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>StudentController</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

这是上述servlet的Get方法。

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String path = request.getServletPath();
        if (path.equals("/addstudent")) {
            createStudent(request, response);
            ......
        else {
            searchAll(request, response);
        }
     }     

    protected void searchAll(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        List<StudentDTO> coList = null;
        coList = StudentDAO.searchStudentList();
        if (coList != null) {
           request.setAttribute("stulist", coList);
        } else {
           request.setAttribute("msg", "No Record Found.");
        }
        RequestDispatcher rd = request.getRequestDispatcher("home.jsp");
        rd.forward(request, response);
   }  

这按预期工作,但是问题是我尝试创建另一个名为CourseController的 servlet,并将其映射到web.xml中。

<servlet>
    <servlet-name>CourseController</servlet-name>
    <servlet-class>com.stu.controller.CourseController</servlet-class>
</servlet>
 <servlet-mapping>
    <servlet-name>CourseController</servlet-name>
    <url-pattern>/course/</url-pattern>
</servlet-mapping>

Servlet的Get与以前相同。

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String path = request.getServletPath();
        if (path.equals("/addcourse")) {
            createCourse(request, response);
            ......
     } 

而且,我尝试在home.jsp页面中使用定位标记访问servlet 。

<a href="${pageContext.request.contextPath}/newstudent">Create Student</a> 
<br/>
<a href="${pageContext.request.contextPath}/course/newcourse/">Create Course</a> 

但是在尝试连接CourseController servlet时,我总是收到404错误。

这一些如何返回到StudentController servlet中的searchAll方法。我了解此处的映射存在问题。但是我不知道那是什么。

请帮忙。谢谢。

问题来源:Stack Overflow

展开
收起
montos 2020-03-28 09:05:46 536 0
1 条回答
写回答
取消 提交回答
  • 您需要配置唯一的url模式,因此,如果您有多个servlet,则“ /”将不起作用。

    假设您的第一个servlet具有url模式“ / newstudent”,则可以将其配置为welcome-file:

    <welcome-file-list>
        <welcome-file>newstudent</welcome-file>
    </welcome-file-list>
    

    回答来源:Stack Overflow

    2020-03-28 09:06:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载