修改代码使其能够运行: @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String user=req.getParameter("user"); String password=req.getParameter("password"); System.out.println("[Debug]" + user + " " + password); Employee employee=new EmployeeServiceMysqllmpl(). queryEmployeeByNameAndPassword(user,password); HttpSession session=req.getSession(); session.setAttribute("username",employee.getEname()); session.setAttribute("superuser",employee.getSuperuser()); System.out.println("[Debug] employee :"+employee.getEid()); if(employee.getEid()!=null){ resp.sendRedirect("/main.jsp"); }else { resp.sendRedirect("/error.jsp"); } }
时间: 2024-03-17 16:40:06 浏览: 155
这段代码是一个Servlet的doGet方法,用于处理HTTP GET请求。根据请求参数中的用户名和密码在数据库中查询员工信息,如果能够找到,则将员工姓名和是否为超级用户保存到Session中,并重定向到主页面;否则重定向到错误页面。
如果要使这段代码能够运行,需要添加以下几点修改:
1. 引入必要的类
在代码开头添加以下引用语句:
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
```
这些类用于处理Servlet请求和响应以及管理Session会话。
2. 定义Employee类
在代码中使用了Employee类,需要先定义该类。可以在代码中添加以下定义语句:
```java
class Employee {
private String eid;
private String ename;
private boolean superuser;
public String getEid() {
return eid;
}
public void setEid(String eid) {
this.eid = eid;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public boolean getSuperuser() {
return superuser;
}
public void setSuperuser(boolean superuser) {
this.superuser = superuser;
}
}
```
该类包含了员工的ID、姓名和是否为超级用户三个属性,以及相应的getter和setter方法。
3. 实现EmployeeServiceMysqllmpl类
在代码中使用了EmployeeServiceMysqllmpl类,需要先实现该类。可以添加以下实现语句:
```java
class EmployeeServiceMysqllmpl {
public Employee queryEmployeeByNameAndPassword(String name, String password) {
// TODO: 在数据库中查询员工信息,并返回Employee对象
return null;
}
}
```
该类包含了根据用户名和密码查询员工信息的方法,但是该方法还没有实现查询数据库的功能。
4. 修改方法实现
在queryEmployeeByNameAndPassword方法中添加查询数据库的实现,可以使用JDBC连接数据库进行查询,示例代码如下:
```java
class EmployeeServiceMysqllmpl {
public Employee queryEmployeeByNameAndPassword(String name, String password) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 构造SQL语句
String sql = "select * from employee where name = ? and password = ?";
// 创建PreparedStatement对象
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1, name);
pstmt.setString(2, password);
// 执行查询
rs = pstmt.executeQuery();
// 解析查询结果
if (rs.next()) {
Employee employee = new Employee();
employee.setEid(rs.getString("eid"));
employee.setEname(rs.getString("ename"));
employee.setSuperuser(rs.getBoolean("superuser"));
return employee;
} else {
return null;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
该代码使用JDBC连接数据库,并查询数据库中的employee表,根据用户名和密码返回Employee对象。
5. 修改重定向路径
在代码中使用了resp.sendRedirect方法进行重定向,需要修改重定向路径,使其指向正确的JSP页面。可以将重定向路径修改为:
```java
if (employee != null) {
resp.sendRedirect(req.getContextPath() + "/main.jsp");
} else {
resp.sendRedirect(req.getContextPath() + "/error.jsp");
}
```
这样就可以将重定向路径改为使用相对路径,使其可以正确跳转到指定的JSP页面。
最终修改后的代码如下:
```java
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
class Employee {
private String eid;
private String ename;
private boolean superuser;
public String getEid() {
return eid;
}
public void setEid(String eid) {
this.eid = eid;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public boolean getSuperuser() {
return superuser;
}
public void setSuperuser(boolean superuser) {
this.superuser = superuser;
}
}
class EmployeeServiceMysqllmpl {
public Employee queryEmployeeByNameAndPassword(String name, String password) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 构造SQL语句
String sql = "select * from employee where name = ? and password = ?";
// 创建PreparedStatement对象
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1, name);
pstmt.setString(2, password);
// 执行查询
rs = pstmt.executeQuery();
// 解析查询结果
if (rs.next()) {
Employee employee = new Employee();
employee.setEid(rs.getString("eid"));
employee.setEname(rs.getString("ename"));
employee.setSuperuser(rs.getBoolean("superuser"));
return employee;
} else {
return null;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String user = req.getParameter("user");
String password = req.getParameter("password");
System.out.println("[Debug]" + user + " " + password);
Employee employee = new EmployeeServiceMysqllmpl()
.queryEmployeeByNameAndPassword(user, password);
HttpSession session = req.getSession();
session.setAttribute("username", employee.getEname());
session.setAttribute("superuser", employee.getSuperuser());
System.out.println("[Debug] employee :" + employee.getEid());
if (employee != null) {
resp.sendRedirect(req.getContextPath() + "/main.jsp");
} else {
resp.sendRedirect(req.getContextPath() + "/error.jsp");
}
}
}
```
阅读全文
相关推荐








import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.sql.SQLException; @WebServlet("/update") public class update extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); String id = req.getParameter("id"); String username = req.getParameter("username"); String password = req.getParameter("password"); UsersDao usersDao = new UsersDao(); User user = new User(); user.setUsername(username); user.setPassword(password); user.setId(Integer.valueOf(id)); try { if (usersDao.update(user)) { resp.getWriter().println("修改成功"+"返回主页"); } else { resp.getWriter().println("修改失败"+"返回主页"); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }



大致讲解一下代码:6.BuyPhoneServlet: package Session01; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; @WebServlet("/buyPhoneServlet") public class BuyPhoneServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter out=resp.getWriter(); String idstr=req.getParameter("id"); int id=Integer.parseInt(idstr); ArrayList ckDB= PhoneDb.getAll(); Phone ck=ckDB.get(id-1); out.println("您购买的"+ck.getName()+"手机下单成功。"); out.println("继续选购"); } }






