【问题标题】:How do I execute an SQL SELECT query in JSP?如何在 JSP 中执行 SQL SELECT 查询?
【发布时间】:2011-03-16 18:33:28
【问题描述】:

我想在 JSP 中执行一个 SQL 查询。显示必须是 JSP 代码,而不是 java。

我无法在 java 页面中引入 JSP 代码。

package tn.com.tradenet.utilisateur;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class Modification extends HttpServlet
{
public void doPost()
{
try
{

String id ="1"; //request.getParameter("userName");
String nom ="mecchlaoui"; //request.getParameter("userName");
String prenom ="fawzia"; //request.getParameter("userName");
String email ="hotmail"; //request.getParameter("password");
String profil ="fawzia"; //request.getParameter("password");
String login ="fawzia"; //request.getParameter("password");
String pass ="1258"; //request.getParameter("password");

ConnectionBD mod = new ConnectionBD();
//String sql="SELECT id FROM utilisateur";
//ResultSet res=mod.execMonSQl(sql);


//while (res.next())
//{
//id = res.getString(1);

//}

mod.execMonUpdate("UPDATE utilisateur SET nom='"+nom+"',prenom='"+prenom+"', email='"+email+"', profil='"+profil+"',login='"+login+"',pass='"+pass+"' WHERE 'id'='"+id+"'");
System.out.println("element ajoutté");}

catch(SQLException s)
{
System.out.println("erreur" +s);
}
}

public static void main(String[] args) {

Modification mdf =new Modification();

mdf.doPost();


}


} 

【问题讨论】:

  • 18 个问题,0 个接受的答案是......好吧,不可接受。
  • @StriplingWarrior,公平地说,只有 12 人符合条件:P

标签: java database jsp servlets


【解决方案1】:

您需要覆盖 real HttpServlet#doPost() 方法,而不是添加另一个不会被 servletcontainer 调用的方法。

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Do your job here.
}

您需要将web.xml 中的这个 servlet 映射到已知的 URL 模式。

<servlet>
    <servlet-name>modification</servlet-name>
    <servlet-class>com.example.Modification</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>modification</servlet-name>
    <url-pattern>/modification</url-pattern>
</servlet-mapping>

使用上面的&lt;url-pattern&gt;,servlet 将监听 URL http://example.com/context/modification

最后更改 JSP 中的 HTML 表单操作 URL,使其与 servlet URL 匹配。

<form action="modification" method="post">

另见:


与具体的问题/问题无关,请注意,您仍然需要更改 servlet 代码以显示一些 JSP 风格的结果页面。例如

request.getRequestDispatcher("/WEB-INF/result.jsp").forward(request, response);

另外,servlet 中的main() 方法没有意义,请将其删除。最后但同样重要的是,您的 SQL 方法对SQL injection attacks 很敏感。 Learn PreparedStatement.

【讨论】:

  • +1。一个难题的优秀答案。您还可以将他指向参数化查询引用,因此他不会对 SQL 注入持开放态度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2014-07-31
  • 2014-12-16
  • 2020-02-21
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多