Java 动态地向文本框添加值

Java 动态地向文本框添加值,java,html,jsp,servlets,Java,Html,Jsp,Servlets,Jsp 现在,当我在下拉菜单cid中选择一个项目时,我想在cname文本字段中显示相应的courname。如何实现此目标?删除 package DBCon; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; /** * * @author Nayan */ public class searchCourseName ex

Jsp


现在,当我在下拉菜单
cid
中选择一个项目时,我想在
cname
文本字段中显示相应的
courname
。如何实现此目标?

删除

package DBCon;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
/**
 *
 * @author Nayan
 */
public class searchCourseName extends HttpServlet {

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String cname=null,courseid;
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost/online_exam?"+"user=root&password=pass");
            Statement stmt=con.createStatement();

            courseid=request.getParameter("cid");
            ResultSet rs=stmt.executeQuery("select course_name from course where course_id='"+courseid+"'");

            while(rs.next())
            {
                cname=rs.getNString("course_name");
                //String s=rs.getString(1);
            }
            request.getSession().setAttribute("courseName",cname);
            //RequestDispatcher requestDispatcher=getServletContext().getRequestDispatcher("http://localhost:8080/ONLINEEXAMINATION/removeCourse2.jsp");
            //requestDispatcher.forward(request,response);

        }
         catch(Exception e) { 
            out.println("<h1>"+e.getStackTrace()+"</h1>");
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
request.setAttribute("courseName",cname);
request.getRequestDispatcher("/removeCourse2.jsp").forward(request, response);
当使用JSP时,它们是多余和危险的。JSP已经设置了自己的内容类型。在servlet中获取响应编写器时,只有在转发到JSP时,服务器日志中才会出现
IllegalStateException
错误


更换

package DBCon;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
/**
 *
 * @author Nayan
 */
public class searchCourseName extends HttpServlet {

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String cname=null,courseid;
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost/online_exam?"+"user=root&password=pass");
            Statement stmt=con.createStatement();

            courseid=request.getParameter("cid");
            ResultSet rs=stmt.executeQuery("select course_name from course where course_id='"+courseid+"'");

            while(rs.next())
            {
                cname=rs.getNString("course_name");
                //String s=rs.getString(1);
            }
            request.getSession().setAttribute("courseName",cname);
            //RequestDispatcher requestDispatcher=getServletContext().getRequestDispatcher("http://localhost:8080/ONLINEEXAMINATION/removeCourse2.jsp");
            //requestDispatcher.forward(request,response);

        }
         catch(Exception e) { 
            out.println("<h1>"+e.getStackTrace()+"</h1>");
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
request.setAttribute("courseName",cname);
request.getRequestDispatcher("/removeCourse2.jsp").forward(request, response);

这将在请求范围中设置变量,以便
${courseName}
可以使用该变量,并将请求转发回表单所在的同一JSP。会话范围也可以工作,但您不希望在这里这样做。它会影响其他请求(例如,访问者可能在多个浏览器选项卡中打开了相同的表单)


更新

package DBCon;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
/**
 *
 * @author Nayan
 */
public class searchCourseName extends HttpServlet {

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String cname=null,courseid;
        try
        {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con=DriverManager.getConnection("jdbc:mysql://localhost/online_exam?"+"user=root&password=pass");
            Statement stmt=con.createStatement();

            courseid=request.getParameter("cid");
            ResultSet rs=stmt.executeQuery("select course_name from course where course_id='"+courseid+"'");

            while(rs.next())
            {
                cname=rs.getNString("course_name");
                //String s=rs.getString(1);
            }
            request.getSession().setAttribute("courseName",cname);
            //RequestDispatcher requestDispatcher=getServletContext().getRequestDispatcher("http://localhost:8080/ONLINEEXAMINATION/removeCourse2.jsp");
            //requestDispatcher.forward(request,response);

        }
         catch(Exception e) { 
            out.println("<h1>"+e.getStackTrace()+"</h1>");
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
request.setAttribute("courseName",cname);
request.getRequestDispatcher("/removeCourse2.jsp").forward(request, response);


${courseName}
将打印请求属性的值。在输入元素的
value
属性中执行此操作将使其显示在浏览器中。如果这是一个用户控制的值,您可能希望使用JSTL
fn:escapeXml()
来避免XSS攻击


另见:
  • -包含一个Hello World

不要只在页面上转储代码,给我们一个解释。问题中的噪音太大了。例如,当您删除那些CSS样式声明时,是否仍会出现相同的问题?如果是这样的话,那么它们就完全不相关了,应该从问题中删除。