Servlet应用
Servlet应用
建立一张用户表,用servlet校验用户名密码,只有在用户表中存在的用户才能登录到系统主页。
1、编写一个servlet进行用户名和密码校验,获取登录页面的用户名密码,并显示出来
1.1创建Servlet
1.2导入前面写的登录页面
将前面写好的登录页面文件复制到web目录下
重新运行程序,输入地址,可以看见之前的登录页面已经成功导入
1.3创建数据库
1.4连接数据库
首先需要下载连接相应数据库的架包,这里我用的是SqlServer数据库,相应架包下载地址https://www.microsoft.com/zh-CN/download/details.aspx?id=56615,下载后将它解压存放到WEB-INF下的lib文件中
连接数据库,验证数据
@WebServlet(name="LoginServlet") public class LoginServlet extends javax.servlet.http.HttpServlet { protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { response.setContentType("text/html;charset = utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter writer=response.getWriter(); String strName = request.getParameter("username"); String strPwd = request.getParameter("password"); //String msg=c; //writer.println(msg); //writer.close(); Connection conn = null; try { //Class.forName("com.microsoft.sqlServer.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;DatabaseName=education;"; conn = DriverManager.getConnection(url ,"sa","123456"); Statement stmt = conn.createStatement(); String sql = "select * from users"; System.out.println(sql); ResultSet rs = stmt.executeQuery(sql); if(rs.next()) { writer.println("用户名:"+strName+"<br>"+"密码:"+strPwd); } else{ writer.println("用户名或者密码错误"); } rs.close(); stmt.close(); conn.close(); } catch (Exception var11) { System.out.println(var11); } }
连接成功
校验成功
2、使用cookie,如果用户在登录时选择保存登录信息,30天内,用户无需登录
2.1账号登录成功生成Cookie,设置有效时长为30天
2.2下次登陆时,自动获取Cookie
效果如下:
3、使用session,显示计科院网站当前在线人数
3.1创建监听
3.2注册监听
3.3获取当前在线人数
效果如下:
4、使用过滤器解决乱码问题,登录时用户名为中文可能不能正常识别,解决该问题
4.1创建过滤器
4.2配置过滤器
效果如下:
将编码方式注释掉,可以看见没有输出乱码
码云地址:https://gitee.com/reganmian/Test.git