<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>数据处理页面</title> </head> <body> <% String userName = new String(request.getParameter("userName").getBytes("ISO-8859-1"),"UTF-8"); String password = new String(request.getParameter("password").getBytes("ISO-8859-1"),"UTF-8"); Statement st = null; Connection con = null; ResultSet rs = null; if(userName.equals("")){ response.sendRedirect("login.jsp"); } try{ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;DatabaseName=eims;"; con = DriverManager.getConnection(url, "sa", "2017212027"); st = con.createStatement(); String sql = "select * from sqlUser where userName = '"+userName+"'"; rs = st.executeQuery(sql); if(rs.next()){ String sql1 = "select * from sqlUser where password = '"+password+"'"; rs = st.executeQuery(sql1); if(rs.next()){ response.sendRedirect("main/main.jsp"); }else{ response.sendRedirect("login.jsp"); } } }catch(Exception e){ e.printStackTrace(); }finally{ rs.close(); st.close(); con.close(); } %> </body> </html>

时间: 2023-07-19 08:48:53 浏览: 52
这是一个使用JSP和JDBC连接数据库的登录验证页面。该页面首先获取用户提交的用户名和密码,然后通过JDBC连接数据库,查询用户表中是否存在该用户。如果存在该用户,则继续查询该用户的密码是否匹配。如果密码匹配,则重定向到主页面,否则重定向回登录页面。 在代码中,首先使用了request.getParameter()方法获取用户提交的用户名和密码,需要将其从ISO-8859-1编码转换为UTF-8编码。然后使用JDBC连接到SQL Server数据库,查询用户表中是否存在该用户,查询结果保存在ResultSet对象中。如果存在该用户,继续查询该用户的密码是否匹配,并根据查询结果进行重定向。 需要注意的是,该代码中存在一些问题,如SQL注入攻击漏洞和资源未正确释放等。建议使用预编译语句和try-with-resources语句块等方式来避免这些问题。
相关问题

<%@ page language="java" import="java.util.*, java.sql.*" pageEncoding="utf-8"%> <%@page import="com.util.SQLConn"%> <%@page import="org.apache.commons.lang3.*" %> <%@page import="com.util.LOGS" %> <html> <body> <%-- 获取前端数据 --%> <% String username = request.getParameter("username"); String usernum = request.getParameter("usernum"); String name=request.getParameter("ytime"); String mon=request.getParameter("mtime"); String num=request.getParameter("rtime"); String people = request.getParameter("people"); %> <%-- 定义SQLConn类和INSERT_SQL常量 --%> <% final String INSERT_SQL = "INSERT INTO YuYue(UserID, Time, People) VALUES (?, ?, ?)"; %> <%-- 执行数据库操作 --%> <% int count = 0; try {Connection conn = SQLConn.openDB(); PreparedStatement pstmt = conn.prepareStatement(INSERT_SQL); { pstmt.setString(1, usernum); pstmt.setString(2, name+mon+num); pstmt.setString(3, people); count = pstmt.executeUpdate(); }} catch (SQLException e) { e.printStackTrace(); } %> <%-- 根据执行结果进行相应的操作 --%> <c:choose> <c:when test="${count > 0}"> <%-- 成功跳转到ZCS.jsp --%> <c:redirect url="ZCS.jsp"/> </c:when> <c:otherwise> <%-- 失败跳转到ZCB.jsp --%> <c:redirect url="../ZCB.jsp"/> </c:otherwise> </c:choose> </body> </html>优化代码

以下是对代码进行优化的建议: 1. 在第二行中,导入语句中的星号通配符应该避免使用,应该明确导入需要使用的类或接口。 2. 在第十行中,可以将 INSERT_SQL 常量定义在 SQLConn 类中并进行调用,以提高代码的可维护性和复用性。 3. 在第十二行中,PreparedStatement 对象应该使用 try-with-resources 语句,以自动释放资源并避免资源泄露问题。 4. 在第十六至二十二行中,可以使用 EL 表达式代替 JSTL 标签,以简化代码并提高可读性。 基于上述建议,优化后的代码如下: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*, java.sql.*"%> <%@ page import="com.util.SQLConn"%> <%@ page import="com.util.LOGS"%> <%@ page import="org.apache.commons.lang3.*"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert Data</title> </head> <body> <%-- 获取前端数据 --%> <% String username = request.getParameter("username"); String usernum = request.getParameter("usernum"); String name = request.getParameter("ytime"); String mon = request.getParameter("mtime"); String num = request.getParameter("rtime"); String people = request.getParameter("people"); %> <%-- 执行数据库操作 --%> <% int count = 0; try (Connection conn = SQLConn.openDB(); PreparedStatement pstmt = conn.prepareStatement(SQLConn.INSERT_SQL)) { pstmt.setString(1, usernum); pstmt.setString(2, name + mon + num); pstmt.setString(3, people); count = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } %> <%-- 根据执行结果进行相应的操作 --%> <c:if test="${count > 0}"> <%-- 成功跳转到 ZCS.jsp --%> <jsp:forward page="ZCS.jsp"></jsp:forward> </c:if> <c:if test="${count <= 0}"> <%-- 失败跳转到 ZCB.jsp --%> <jsp:forward page="../ZCB.jsp"></jsp:forward> </c:if> </body> </html> ``` 优化后的代码更加简洁、易读、易维护,并且避免了可能存在的一些问题。

检查<?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.DriverManager" %> <%@ page import="java.sql.Connection" %> <%! Connection connection = null; try { String url = "jdbc:postgresql://localhost:5432/postgres"; String username = "postgres"; String password = "postgres"; // 获取数据库连接 connection = DriverManager.getConnection(url, username, password); } catch (Exception e) { e.printStackTrace(); } %> <% if (connection != null) { out.println("数据库连接成功!"); } else { out.println("数据库连接失败!"); } %>

你提供的代码片段是一个JSP页面,用于检查数据库连接是否成功,并输出相应的结果。 该代码片段首先通过`<%@ page %>`指令设置页面的编码为UTF-8,然后导入了`java.sql.DriverManager`和`java.sql.Connection`两个类。 在`<%! %>`标签中,定义了一个`connection`变量,并在`try-catch`块中尝试建立与PostgreSQL数据库的连接。其中,使用了特定的URL、用户名和密码来构建连接字符串,并通过`DriverManager.getConnection()`方法获取数据库连接。 在`<% %>`标签中,通过检查`connection`变量是否为null来判断数据库连接是否成功,并输出相应的结果。 请确保以下几点: 1. 已正确导入所需的JDBC驱动程序。例如,在这个例子中,你需要确保已经导入了PostgreSQL的JDBC驱动程序。 2. 已正确设置数据库连接的URL、用户名和密码。在这个例子中,URL使用的是本地主机(localhost)和默认的PostgreSQL端口号5432,并使用了"postgres"作为用户名和密码。请根据你的实际情况进行相应修改。 3. 页面的文件扩展名为.jsp,并确保你的Web服务器已正确配置以支持JSP页面。 如果你有进一步的问题或需要更多帮助,请随时提问。

相关推荐

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.test.bean.Goods,java.util.ArrayList" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>购物车</title> <style type="text/css"> table{border-collapse:collapse;} td{border:1px solid black; text-align:center; } #deal{margin-left:200px} </style> </head> <body> <jsp:useBean id="cart" class="com.test.bean.Cart" scope="session"></jsp:useBean> <%if(cart==null||cart.getGoodslist().size()==0) out.println("购物车空空如也.....返回商品首页"); else{ ArrayList<Goods>goodslist=cart.getGoodslist(); %> 当前购物车共有<%=cart.getGcount() %>件物品    返回商品首页
序号 商品号 商品名称 价格 数量 小计 描述 <%for(int i=0;i<goodslist.size();i++){ Goods goods=goodslist.get(i); %> <%=i+1 %> <%=goods.getGid() %> <%=goods.getGname() %> <%= String.format("%.2f", goods.getGprice())%> <%=goods.getGcount() %> <%=String.format("%.2f", goods.getGprice()*goods.getGcount()) %> 删除 <%}%>
总计<%=String.format("%.2f",cart.getTotal())%>    <input type="button" id="deal" value="购买" /></input>
<%}%> <script type="text/javascript"> var dealbutton=document.getElementById("deal"); dealbutton.onclick=function(){ var cf=confirm("确定购买吗?"); if(cf==true){ window.location.href="Servlet/DealServlet"; } } </script> </body> </html> 修改删除功能,在购物车物品数量大于1的情况下点击“删除”时减少1个,等于1时删除此项商品;

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*,edu.nustti.dao.*,edu.nustti.dao.impl.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用户注册</title> </head> <body> <form action="/STU_manager/servlet/UserServlet?action=register" name="f1" method="post"> 用户名: <input type="text" name="userName"> 密 码: <input type="password" name="password"> 姓 名: <input type="text" name="trueName"> 性 别: <input type="radio" checked="checked" name="sex" value="0">男 <input type="radio" name="sex" value="1">女 生 日: <select name="y"> <c:forEach begin="1990" end="2010" var="y"> <option value="${y}">${y}</option> </c:forEach> </select> <select name="m"> <c:forEach begin="1" end="9" var="m"> <option value="0${m}">${m}</option> </c:forEach> <c:forEach begin="10" end="12" var="m"> <option value="${m}">${m}</option> </c:forEach> </select> <select name="d"> <c:forEach begin="1" end="9" var="d"> <option value="0${d}">${d}</option> </c:forEach> <c:forEach begin="10" end="31" var="d"> <option value="${d}">${d}</option> </c:forEach> </select> 爱 好: <% FavoritesDao dao1 = new FavoritesDaolmp1(); // 创建爱好存储业务模型 List list1 = dao1.getAllFavorates(); request.setAttribute("F", list1); %> <c:forEach var="f" items="${F}"> <input type="checkbox" name="favorates" value="${f.id }">${f.favorate} </c:forEach> 班 级: <% ClassesDao dao2 =(ClassesDao) new ClassesDaoImpl(); // 创建班级存储业务模型 List list2 = dao2.getAllClasses(); request.setAttribute("C", list2); %><select name="classId"> <c:forEach var="c" items="${C}"> <option value="${c.id}">${c.className}</option> </c:forEach> </select> 介 绍: <textarea rows="10" cols="20" name="introduction"></textarea> <input type="submit" value="注册"> </form> </body> </html>检查代码

最新推荐

recommend-type

grpcio-1.47.0-cp310-cp310-linux_armv7l.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB取整函数与数据分析的应用:round、fix、floor、ceil在数据分析中的应用

![MATLAB取整函数与数据分析的应用:round、fix、floor、ceil在数据分析中的应用](https://img-blog.csdnimg.cn/img_convert/a12c695f8b68033fc45008ede036b653.png) # 1. MATLAB取整函数概述 MATLAB提供了一系列取整函数,用于对数值进行四舍五入或截断操作。这些函数包括: - `round`:四舍五入到最接近的整数 - `floor`:向下取整到最小的整数 - `ceil`:向上取整到最大的整数 - `fix`:截断小数部分,返回整数部分 这些函数在数据分析、可视化和特定领域(如金融
recommend-type

r语言如何调用split函数按照factor分开后得到的dataframe

可以使用如下语句: split_dataframe <- split(original_dataframe, original_dataframe$factor_column) 其中,original_dataframe为待拆分的原始数据框,$factor_column为按照哪一列分组(即因子列),split_dataframe为拆分后得到的数据框列表。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。