使用jsp、servlet和java更新数据库时遇到问题

使用jsp、servlet和java更新数据库时遇到问题,java,jsp,servlets,Java,Jsp,Servlets,嗨,我在更新数据库中的元素时遇到问题。我在数据库中的列中的值似乎不会出现。我需要它,以便我可以更新我的数据库,但这是我得到的 { 这是我的Servlet empServices empserv= new empServices(); if (request.getParameter("process") !=null && request.getParameter("process").equals("updemps")) { empgs.addAll(emps

嗨,我在更新数据库中的元素时遇到问题。我在数据库中的列中的值似乎不会出现。我需要它,以便我可以更新我的数据库,但这是我得到的 {

这是我的Servlet

empServices empserv= new empServices();

if (request.getParameter("process") !=null && request.getParameter("process").equals("updemps")) 

    {


empgs.addAll(empserv.updAll(request.getParameter("serialS")));
            request.setAttribute("empdetails", empgs);
            RequestDispatcher updrd = request.getRequestDispatcher("updDetails.jsp");
            updrd.forward(request, response);


    }

else if (request.getParameter("process") != null && request.getParameter("process").equals("edit"))
        {
            //some process here

        }
这是我的DAO,这一部分将把数据库中的内容带到jsp页面

public ArrayList<empGetSet> getupdemp()
{

    ArrayList<empGetSet> empdtls = new ArrayList<empGetSet>();

    try {

        Connection conn = getConnection();
        String updsql = "UPDATE csemp SET Fname=?,Lname=?,NameResource=?,JRSS=?,Band=?,Acct=?,PMPSeat=?,SeatJRSS=?,OpenSeatDesc=?,ReqSkills=?,ReqBand=?,DReject=?,RReject=?,DetActionPlan=?,DataCompletion=?,Status=? WHERE SerialNumber=?";
        PreparedStatement psupd= conn.prepareStatement(updsql);
        ResultSet rsupd = psupd.executeQuery();

        while (rsupd.next()) 
        {

            empGetSet readgetset = new empGetSet();

            readgetset.setfName(rsupd.getString(1));
            readgetset.setlName(rsupd.getString(2));
            readgetset.setNameRes(rsupd.getString(3));
            readgetset.setSerialS(rsupd.getString(4));
            readgetset.setjRss(rsupd.getString(5));
            readgetset.setBanD(rsupd.getString(6));
            readgetset.setAccT(rsupd.getString(7));
            readgetset.setpMPS(rsupd.getString(8));
            readgetset.setSjRss(rsupd.getString(9));
            readgetset.setOpenSeatDesc(rsupd.getString(10));
            readgetset.setReqSkills(rsupd.getString(11));
            readgetset.setReqBand(rsupd.getString(12));
            readgetset.setdReject(rsupd.getString(13));
            readgetset.setrReject(rsupd.getString(14));
            readgetset.setDetActPlan(rsupd.getString(15));
            readgetset.setDataComplete(rsupd.getString(16));
            readgetset.setStaT(rsupd.getString(17));


            empdtls.add(readgetset);

        }
        psupd.close();
        conn.close();

    }


    catch (Exception e)
    {

        e.printStackTrace();
    }

    return empdtls;

}
这是我的jsp页面

<title>Update Details</title>
</head>
<body>
<div align="right"><a href="loggedin.jsp"><button>Back</button></a></div>

<form action = "empServlet" method ="get">
<c:forEach items ="${empdetails}" var="empdet">

First name:
  <input type="text" name="eFname"  value ="${empdet.fName}" required /> 
  <br>
  <br>
Last name:
  <input type="text" name="eLname" value ="${empdet.lName}" required/>
  <br>
  <br>
Name of Resource (LN ID Format):
  <input type="text" name="eNameRes"  value="${empdet.nameRes}" required/>
  <br>
  <br>
Serial Number:
  <input type="text" name="eSerials"  value ="${empdet.serialS}" required/>
  <br>
  <br>
JRSS:
  <input type="text" name="eJrss" value ="${empdet.jRss}" required/>
  <br>
  <br>
Band:
  <input type="text" name="eBand"  value ="${empdet.banD}" required />
  <br>
  <br>
Account(Proposed):
  <input type="text" name="eAcct" value ="${empdet.accT}" required/>">
  <br>
  <br>
PMP Seat:
  <input type="text" name="ePMPs" value ="${empdet.pMPS}" required/>
  <br>
  <br>
Seat JRSS:
  <input type="text" name="esJRSS"  value ="${empdet.sjRss}" required/>
  <br>
  <br>
Open Seat Description:
  <br>
  <textarea rows="4" cols="50" name ="eOpenSeatDesc" placeholder = "Enter descriptions here" required>${empdet.openSeatDesc}</textarea>
  <br>
   <br>
Required Skills:
  <input type="text" name="eReqSkills" value ="${empdet.reqSkills}" required/>
  <br>
  <br>
Requested Band (low/high):
  <input type="text" name="eReqBand" value ="${empdet.reqBand}" required/>
  <br>
  <br>
Date of Rejection:
  <input type="text" name="eDreject" value ="${empdet.dReject}" required/>
  <br>
  <br>
Reason for Rejection:
  <br>
  <textarea rows="4" cols="50" placeholder = "Enter reasons here" name= "eRreject" required>${empdet.rReject}</textarea>
  <br>
   <br>
Detailed Action Plan:
  <br>
  <textarea rows="4" cols="50" placeholder = "Enter details here" name= "eDetActPlan" required>${empdet.detActPlan}</textarea>
  <br>
  <br>
Target Date of Completion:
  <input type="text" name="eDataComplete"  value ="${empdet.dataComplete}" required/>
  <br>
  <br>
Status (Ongoing,Closed):
  <input type="text" name="eStat"  value ="${empdet.staT}" required/>
  <br><br>
<input type = "submit" value = "Submit" >

</c:forEach>
</form>
</body>
</html>
更新详细信息
名字:


姓氏:

资源名称(LN ID格式):

序列号:

JRSS:

波段:

账户(拟议): ">

PMP席位:

座椅JRSS:

开放式座椅说明:
${empdet.openSeatDesc}

所需技能:

请求的波段(低/高):

拒绝日期:

拒绝理由:
${empdet.rReject}

详细行动计划:
${empdet.detActPlan}

目标完成日期:

状态(正在进行、已结束):

更新~~~ *我终于显示了内容:)(我很高兴)我可以问另一个问题吗?朋友们?我如何才能真正更新这个。我的意思是,当我在更新jsp上单击提交按钮时,它会将新值存储到数据库中。顺便说一句,谢谢大家!

尝试将

<c:out value='${status.value}' /> 

而不是

<c:out value ="${empdet.fName}"/>

其他人也一样


关于spring绑定和状态变量的说明

status是spring bind使用的变量。

您还需要使用spring bind绑定字段值

改变这个

First name:
  <input type="text" name="eFname" required value ="<c:out value ="${empdet.fName}"/>">
  <br>
  <br>
名字:



名字:
错误代码:
等等

  • 结果集用于选择查询
  • 如果正在运行更新,请使用executeUpdate()或execute
  • 如果有列表,请使用c:for

    String query=“query”; PreparedStatement preparedStmt=conn.prepareStatement(查询); 准备好的stmt.setInt(16000); 准备好的测试设置字符串(2,“Fred”)


  • 问题似乎是您未能在JSP中导入JSTL核心标记。还要确保获取jar文件。请在JSP顶部添加以下行

    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
    
    
    
    还要确保为JSP启用了EL(表达式语言)。如何测试EL是否被禁用/忽略?尝试一个简单的表达式,看看它是否生成结果(已启用)或按原样打印(已忽略)。例如,
    ${3+4}
    必须打印结果
    7


    最后一个,要打印,您实际上不需要使用
    ,只需使用
    ${empdet.fName}
    仍然会得到相同的结果,因此尝试此方法而不必导入JSTL,
    。但请确保
    empdet
    设置在范围(页面/请求/会话/应用程序)中.

    什么是问题更新sql查询或JSP输出?JSP输出,它不会显示数据库中的详细信息,因此我可以编辑它,而是显示“c:out value=”当我将其转换为:String updsql=”时更新csemp集合Fname=?,Lname=?,NameResource=?,JRSS=?,Band=?,Acct=?,PMPSeat=?,SeatJRSS=?,OpenSeatDesc=?,ReqSkills=?,ReqBand=?,DReject=?,RReject=?,DetActionPlan=?,DataCompletion=?,Status=?其中SerialNumber=?,“PreparedStatement PSUPPD=conn.prepareStatement(updsql);PSUPPD.setString(1,Fname);----fName给我一个错误你能指定camethansk bro的例外情况吗?但状态是什么意思?值??我包括了那个兄弟,顺便说一句,谢谢,我已经删除了我更新了我的代码,谢谢,并添加了另一个问题:)
    <spring:bind path="empdet.fName">
            First Name: <input 
                type="text"
                value="<c:out value="${status.value}"/>"
                name="<c:out value="${status.expression}"/>">
                <c:if test="${status.error}">
                    Error codes:
                   <c:forEach items="${status.errorMessages}" var="error">
                        <c:out value="${error}"/>
                    </c:forEach>
                </c:if>
        </spring:bind>
    
      // execute the java preparedstatement
      preparedStmt.executeUpdate();
    
    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>