登陆功能实现(一)

登陆功能实现(一)

  • 修改工程后生效需要重新让tomcat编译,需重启tomcat

代码修改了需要部署tomcat,页面修改不需要重新部署tomcat

修改代码tomcat会自动重新加载

  •  访问页面获取登陆页面   

  • 点击submit,会执行action中的引用,这里只是写了login

  • 告诉浏览器使用编码方式

  • 提交方式get与post区别:

  • 获取到用户输入的用户名和密码,进行登陆业务的处理
  • tomcat会把页面表单传入的数据封装在request中

  • 实现简单的验证用户名与密码

  • 请求与相应中文乱码问题

注意添加的时刻位置问题

获取参数前最好也先设置好买编码方式

 

  • 获取的数据对比不能写死,需要与数据库对比,需要新建一个javabean

  • 创建数据库

 

  • 新建dao层的接口与实现类

暂遇到问题:

1.登陆页面无论输入什么都显示登陆成功

2.dubug测试,提示tomcat端口被占用

  • 执行到此处代码

LoginServlet

package com.xiaowang.login.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xiaowang.login.beans.User;
import com.xiaowang.login.dao.UserDao;
import com.xiaowang.login.dao.UserDaoIml;

public class LoginServlet  extends HttpServlet{
	/**
	 * 常用方法:doGet  doPost service
	 * doGet:处理客户端get方式的请求
	 * doPost:处理客户端Post方式的请求
	 * service:根据客户端的请求方式去调用对应的doGet、doPost方法
	 */
	
	//要么重写service,要么重写doGet  doPost方法
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(req, resp);
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	 doPost(req,resp);
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		System.out.println("登陆请求过来了............");
		//获取到用户输入的用户名和密码,进行登陆业务的处理
		
		req.setCharacterEncoding("utf-8");
		
		//获取用户名
		String username = req.getParameter("username");
		//获取用户密码
		String password = req.getParameter("password");
		System.out.println(username+","+password);
		
		//验证用户名与密码
		//设置编码方式,防止出现中文乱码
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter out = resp.getWriter();
		
		//获取Dao对象
		UserDao userDao = new UserDaoIml();
		
		User user = userDao.getUserByUsernameAndPassword(username, password);
		
		if(user == null) {
			//登陆失败
			out.write("login fail 登陆失败");
		}else {
			//登陆成功
			out.write("login success 登陆成功");
			
		}
			
		/*
		if(username.equals("tom") && password.equals("123")) {
			out.write("login success 登陆成功");
			
		}else {
			out.write("login fail 登陆失败");
		}
		*/
		
		
		
	}
	
	
	
	
	
	
	
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
	id="WebApp_ID" version="4.0">
	<!-- 配置servlet: 配置LoginServlet与请处理请求的映射 -->
	<servlet>
		<servlet-name>loginServlet</servlet-name>
		<servlet-class>com.xiaowang.login.servlet.LoginServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>loginServlet</servlet-name>
	<!-- 客戶端的登陆请求: http://locallost:8080/web01/login-->
		<url-pattern>/login</url-pattern>
	</servlet-mapping>

</web-app>

UserDaoIml

package com.xiaowang.login.dao;

import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import com.xiaowang.login.beans.User;

public class UserDaoIml implements UserDao {

	@Override
	public User getUserByUsernameAndPassword(String username, String password) {
		User u = new User();		
		//JDBC:获取连接 编写SQL语句 预编译SQL 设置参数 封装结果 关闭连接
		//获取连接
		try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/bigdata";
			String usr = "root";
			String passwd = "root";
			try {
				java.sql.Connection conn = DriverManager.getConnection(url, usr, passwd);
				String sql = "select id,username,password from tb_user where username=? password=?";
				PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);
				
				ps.setString(1, username);	
				ps.setString(2, password);
				
				ResultSet rs = (ResultSet) ps.executeQuery();
				
				if(rs.next()) {
					u.setID(rs.getInt("id"));
					u.setUsername(rs.getString("username"));
					u.setPassword(rs.getString("password"));
					
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		} catch (ClassNotFoundException e) {			
			e.printStackTrace();
		}
		
		return u;
	}

}