if(new CommDAO().select("select * from sysuser where uname='"+request.getParameter("uname")+"'").size()==0) { HashMap ext = new HashMap(); ext.put("savetime",Info.getDateStr()); new CommDAO().insert(request,response,"sysuser",ext,true,false); }else{ %> <script type="text/javascript"> alert("用户名已存在"); </script> <%} %>
时间: 2024-04-25 17:27:46 浏览: 11
这是一个Java Server Pages(JSP)页面中的代码片段,用于进行用户注册。代码中的逻辑如下:
1. 从前端页面获取用户名(通过request.getParameter("uname")方法)。
2. 利用CommDAO对象执行SQL语句,查询数据库中是否已经存在该用户名。如果查询结果为空(即size()==0),则表示该用户名可以使用。
3. 在HashMap对象中添加用户注册时需要保存的信息(例如注册时间等)。
4. 利用CommDAO对象执行SQL语句,将用户信息插入到数据库中(insert方法)。
5. 如果查询结果不为空,则表示该用户名已被注册过,通过JavaScript代码弹出提示框告知用户。
需要注意的是,代码中的SQL语句存在SQL注入漏洞,建议使用预编译语句或者其他防注入措施来避免此类漏洞。
相关问题
String sqlStr = "select uname,upwd from yonghuxinxi where" + "uname = '?' and upwd = '?'";
这个 SQL 语句的问题在于,你在字符串中使用了问号作为占位符,但是没有使用 PreparedStatement 对象来执行 SQL 语句。正确的写法应该是:
```
String sqlStr = "select uname, upwd from yonghuxinxi where uname = ? and upwd = ?";
PreparedStatement pstmt = conn.prepareStatement(sqlStr);
pstmt.setString(1, "用户名");
pstmt.setString(2, "密码");
ResultSet rs = pstmt.executeQuery();
```
这样可以避免 SQL 注入攻击,并且能够正确地将参数传递给 SQL 语句。
在JdbcDemo类中更改sysuser表,请依次实现下面步骤。 ① 在执行查询语句之前,增加执行更改语句insert into sysuser(uname, upassword, telephone, email, wechat) values ('wang', 'king', '13999999999', 'wang@wang.com', 'kingofking')。 ② 再次运行JdbcDemo类,观察记录运行结果”。 ③ 注释①中的代码。在执行查询语句之前,增加执行更改语句update sysuser set upassword = '000000' where uname = 'wang'。 ④ 再次运行JdbcDemo类,观察记录运行结果”。 ⑤ 注释③中的代码。在执行查询语句之前,增加执行更改语句delete from sysuser where uname = 'wang'。 ⑥ 再次运行JdbcDemo类,观察记录运行结果”。 ⑦ 尝试修改上面的SQL语句,理解和掌握JDBC的使用方式。java代码
以下是实现上述要求的Java代码:
```java
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 定义数据库连接、用户名和密码
String url = "jdbc:mysql://vlab.tute.edu.cn:7006/数据库名称";
String user = "用户名";
String password = "密码";
// 获取连接对象
Connection conn = DriverManager.getConnection(url, user, password);
// 创建语句对象
Statement stmt = conn.createStatement();
// 增加记录
String sql1 = "insert into sysuser(uname, upassword, telephone, email, wechat) values ('wang', 'king', '13999999999', 'wang@wang.com', 'kingofking')";
stmt.executeUpdate(sql1);
// 修改记录
String sql2 = "update sysuser set upassword = '000000' where uname = 'wang'";
stmt.executeUpdate(sql2);
// 删除记录
String sql3 = "delete from sysuser where uname = 'wang'";
stmt.executeUpdate(sql3);
// 查询记录
ResultSet rs = stmt.executeQuery("select * from sysuser");
// 遍历ResultSet对象
while (rs.next()) {
System.out.println(rs.getString("uname") + " " + rs.getString("upassword") + " " + rs.getString("telephone") + " " + rs.getString("email") + " " + rs.getString("wechat"));
}
// 关闭语句对象和连接对象
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
```
注意:在实际使用中,应该根据需求修改SQL语句,例如修改表名、字段名、增加条件等。同时,应该注意防止SQL注入攻击,避免用户输入恶意的SQL语句。