servlet写登录页面
代码:(类按照逻辑顺序一次展示,使用原生jdbc连接数据库,可考虑用连接池等)
LoginServlet类
package com.feizhuwebthree;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.junit.Test;
import com.feichu.domain.User;
import com.feizhuweb_service.UserService;
public class LoginServlet extends HttpServlet {
@Override
//初始化登录次数
public void init() throws ServletException {
//获取全局管理者
ServletContext context=getServletContext();
//初始化次数
context.setAttribute("count", 0);
System.out.println("初始化次数成功");
}
@Override
@Test
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码
resp.setContentType("text/html;charset=utf-8");
//接受用户名和密码
String username=req.getParameter("username");
String password=req.getParameter("password");
//调用userservice里的login(username,password) 返回:User user
User user = null;//初始化
try {
user = new UserService().login(username,password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new RuntimeException("网络超时");
}
//判断user是否为空
if(user==null) {
//若为空 “用户名与密码不匹配”
resp.getWriter().print("用户名密码不匹配.3秒之后页面返回");
//定时跳转
resp.setHeader("refresh", "3,url=/webthre/form.html");
}else {
//若不为空"xxx:欢迎登录"
resp.getWriter().print(user.getUsername()+"欢迎登录");
//获取全局管理者
ServletContext context=this.getServletContext();
//获取次数
Integer cishu =(Integer) context.getAttribute("count");
//将次数+1
cishu++;
//将次数再次放入域对象种
context.setAttribute("count", cishu);
}
}
}
UserService 类
package com.feizhuweb_service;
import com.feichu.domain.User;
import com.feizhu_dao.UserDao;
public class UserService {
/**
* 用户登录
* @param username 用户名
* @param password 密码
* @return 返回一个 user用户
* @throws Exception
*/
public User login(String username, String password) throws Exception {
//调用dao
UserDao dao=new UserDao();
return dao.getUserByUsernameAndPwd(username,password);
}
}
UserDao 类
package com.feizhu_dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import com.feichu.domain.User;
public class UserDao {
/**
* 登录
*
* @param username
* 用户名
* @param password
* 密码
* @return 返回用户
*/
// @Test
public User getUserByUsernameAndPwd(String username, String password) throws Exception {
User user = null;
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?characterEncoding=utf8&useSSL=false", "root", "root");
// 编写sql
String sql = "select * from user where username=? and password=?";
// 创建语句执行者
PreparedStatement st = conn.prepareStatement(sql);
// 设置参数
st.setString(1, username);
st.setString(2, password);
// 执行语句
ResultSet rs = st.executeQuery();
if (rs.next()) {
user=new User();
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
// 释放资源
rs.close();
st.close();
conn.close();
return user;
}
}
User 类
package com.feichu.domain;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
效果展示
备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意) QQ1156107728(添加注明来意)