Javascript 在a<;中加载JSP页面应该做什么;部门>;通过Servlet在另一个JSP页面中添加标记?

Javascript 在a<;中加载JSP页面应该做什么;部门>;通过Servlet在另一个JSP页面中添加标记?,javascript,jsp,servlets,Javascript,Jsp,Servlets,问题是,我有3个JSP页面(main.JSP、manageClasses.JSP和insertDates.JSP)和2个servlet(AttendanceServlet和ManageClassServlet)。主页会在其内部加载其他页面 基本上,我要做的是在调用AttendanceServlet时,将insertDates.jsp加载到main.jsp中。替换以前由ManageClassServlet加载的内容 main.jsp <%@page contentType="text/htm

问题是,我有3个JSP页面(main.JSPmanageClasses.JSPinsertDates.JSP)和2个servlet(AttendanceServletManageClassServlet)。主页会在其内部加载其他页面

基本上,我要做的是在调用AttendanceServlet时,将insertDates.jsp加载到main.jsp中。替换以前由ManageClassServlet加载的内容

main.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="js/jquery-1.7.min.js"></script>
        <link rel="stylesheet" href="css/stylesheetprincipal.css">
        <script type="text/javascript">  
            $(document).ready(function() {
            $("#gt").click(function(){
                $("#internal").load('ManageClassServlet');
            });
        });
        </script>
        <title>Main</title>
    </head>
    <body>
        <div id="nav">
            <ul>
                <li><a href="javascript:void(0)" id="gt" title="manage">MANAGE     CLASSES</a></li>  
                <li><a href="logout.jsp" title="exit">EXIT</a></li>
            </ul>
        </div>    
        <div id="forms">
            <div id="internal">
            </div>
        </div>
    </body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Manage Classes</title>
    </head>
    <body>
        <form action="AttendanceServlet" method="post">
            <table id="classTable" border="2">
                <TR> <TH>&nbsp;</TH> <TH>Subject</TH>  <TH>Year/Semester</TH>  <TH>Frequencias</TH> </TR>
                <c:forEach items="${matrixTable}" var="row" varStatus="i">
                    <tr>
                        <TH>${row[0]}</TH>
                        <c:forEach begin="1" end="2" items="${row}" var="value">
                            <td>${value}</td>
                        </c:forEach>
                        <td> <button type="submit" name="Ver" value="${row[3]}">See    </button> </td>
                    </tr>
                </c:forEach>
            </table>
        </form>
    </body>
</html>
manageClasses.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="js/jquery-1.7.min.js"></script>
        <link rel="stylesheet" href="css/stylesheetprincipal.css">
        <script type="text/javascript">  
            $(document).ready(function() {
            $("#gt").click(function(){
                $("#internal").load('ManageClassServlet');
            });
        });
        </script>
        <title>Main</title>
    </head>
    <body>
        <div id="nav">
            <ul>
                <li><a href="javascript:void(0)" id="gt" title="manage">MANAGE     CLASSES</a></li>  
                <li><a href="logout.jsp" title="exit">EXIT</a></li>
            </ul>
        </div>    
        <div id="forms">
            <div id="internal">
            </div>
        </div>
    </body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Manage Classes</title>
    </head>
    <body>
        <form action="AttendanceServlet" method="post">
            <table id="classTable" border="2">
                <TR> <TH>&nbsp;</TH> <TH>Subject</TH>  <TH>Year/Semester</TH>  <TH>Frequencias</TH> </TR>
                <c:forEach items="${matrixTable}" var="row" varStatus="i">
                    <tr>
                        <TH>${row[0]}</TH>
                        <c:forEach begin="1" end="2" items="${row}" var="value">
                            <td>${value}</td>
                        </c:forEach>
                        <td> <button type="submit" name="Ver" value="${row[3]}">See    </button> </td>
                    </tr>
                </c:forEach>
            </table>
        </form>
    </body>
</html>

管理班级
科目年份/学期频率
${row[0]}
${value}
看见
我试图使用out对象发送jsp页面,但没有成功

AttendanceServlet

@WebServlet(name = "ManageClassServlet", urlPatterns = {"/ManageClassServlet"})
public class ManageClassServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {
        HttpSession session = request.getSession();
        String[][] tableMatrix = getTableMatrix(professorClasses);
        session.setAttribute("tableMatrix", tableMatrix);
        response.sendRedirect("manageClasses.jsp");
    }
}
@WebServlet(name = "AttendanceServlet", urlPatterns = {"/AttendanceServlet"})
public class AttendanceServlet extends HttpServlet {

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {
        try {
            ClassDAO classDao = new ClassDAO();
            Integer idClass = Integer.parseInt(request.getParameter("See"));
            ClassBean class = classDao.searchClassBean(idClass);
            if (class.getDateClasses() == null) {
                String path = "/WEB-INF/jsp/main.jsp";
                PrintWriter out = response.getWriter();
                out.println("<script type=\"text/javascript\">");
                out.println("$(document).ready(function() {");
                out.println("$(\"#internal\").load('insertDates.jsp');");
                out.println("});");
                out.println("</script>");
                RequestDispatcher dispatcher = request.getRequestDispatcher(path);
                dispatcher.include(request, response);
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}
@WebServlet(name=“AttendanceServlet”,urlPatterns={”/AttendanceServlet})
公共类AttendanceServlet扩展HttpServlet{
@凌驾
public void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException,java.io.IOException{
试一试{
ClassDAO ClassDAO=新的ClassDAO();
Integer idClass=Integer.parseInt(request.getParameter(“See”);
ClassBean class=classDao.searchClassBean(idClass);
if(class.getDateClasses()==null){
字符串路径=“/WEB-INF/jsp/main.jsp”;
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“$(document).ready(function(){”);
out.println(“$(\”#internal\”).load('insertDates.jsp');”;
out.println(“}”);”;
out.println(“”);
RequestDispatcher=request.getRequestDispatcher(路径);
调度器。包括(请求、响应);
}
}catch(SQLException-ex){
例如printStackTrace();
}
}
}

在这个特定示例中,我花了一段时间才开始思考加载、重定向和分派(子)视图的奇怪方式。很难找出问题的根本原因。至少,很明显,您对jQuery的使用太过火了。首先,如果客户端禁用了JS,那么您的主页已经完全无用了

为了实现您想要的任何目标,您首先必须将客户端责任与服务器端责任分开。暂时忘掉jQuery,让它先使用普通的
和/或
元素和
。如果在Servlet类中保留allJava代码,并在JSP文件中保留allHTML/CSS(以及任何未来的JS),那么代码几乎可以自己编写

最后,一旦您完全可以在没有任何jQuery/JS代码的情况下工作,那么您就可以通过以不引人注目的方式添加jQuery来逐步增强客户端体验。也就是说,服务器端功能(如servlet和JSP中的功能)不能更改(除了最终检查它是正常的还是ajax请求,以便能够给出更合适的响应)。jQuery只需在文档加载过程中添加事件处理程序,并以改进用户体验的方式更改文档行为(同样,不更改服务器端代码)。jQuery本身并不是一个MVC框架。不,您不应该让servlet发出任何jQuery代码。这毫无意义


再一次,如果我没有一个合适的答案,我很抱歉,但你希望现在能理解,我根本无法做到这一点。干净的代码风格和Servlet/JSP的良好开端令人赞叹。我只会将那些
元素小写。

通常,您会通过Ajax表单提交来实现这一点——与加载表单的方式相同,但通过提交来实现。(通常为
$.post

AttendanceServlet
servlet将转发到
insertDates.jsp
,Ajax提交的
success
处理程序将使用Ajax提交的结果更新
#internal
div


我不清楚为什么在提交表单时,您会放弃正常的jQuery机制。也许我遗漏了什么,但我真的不知道你想做什么。

我按照你的说明重写了所有代码,你猜怎么着,正如你所说,代码几乎是自己写的。现在我能够保持更快的配速,而不会让你陷入太多的困境。正如您所注意到的,我不是一个经验丰富的开发人员,这是我第一次处理js。我很荣幸能得到如此优秀的程序员的回复。如果这不是一个现成的答案,那是因为这是不可能的。谢谢!