Request获取数据与Servlet服务 之间的简单互通

  * 登陆界面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆网页</title>
</head>
<body>
    <form action="/day_13/loginServlet" method="post">
        用户名:<input type="text" name="username"> <br>
        密码:<input type="password" name="password"><br>

        <input type="submit" value="登录">

    </form>
</body>
</html>

 *  数据库的配置文件(druid.properties)
		  
		driverClassName=com.mysql.jdbc.Driver
		url=jdbc:mysql:///day14
		username=root
		password=root
		initialSize=5
		maxActive=10
		maxWait=3000


*  数据库的表

 			CREATE DATABASE day14;
			USE day14;
			CREATE TABLE USER(
			
				id INT PRIMARY KEY AUTO_INCREMENT,
				username VARCHAR(32) UNIQUE NOT NULL,
				PASSWORD VARCHAR(32) NOT NULL
			);
* 创建数据库对应的类 (User类对应这user表)	
		私有化变量  getter  setter toString 
		package cn.itcast.domain;
		
		/**
		 * @Author: Qin Pengcheng
		 * @CreateDate: 2018/9/22 15:14
		 * @Description:
		 */
		public class User {
		    private int id ;
		    private String username;
		    private String password;
		
		    @Override
		    public String toString() {
		        return "User{" +
		                "id=" + id +
		                ", username='" + username + '\'' +
		                ", password='" + 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;
		    }
		}

*  创建UserDao提供login的方法

	package cn.itcast.dao;
		
		import cn.itcast.domain.User;
		
		import cn.itcast.utils.JDBCUtils;
		import org.springframework.dao.DataAccessException;
		import org.springframework.jdbc.core.BeanPropertyRowMapper;
		import org.springframework.jdbc.core.JdbcTemplate;
		
		/**
		 * 操作数据库中的 表类
		 */
		public class UserDao {
		
		    //声明JdbcTemplate对象工用
		    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
		
		
		    /**b
		     * 登陆方法
		     * @param loginUser 用户从界面填写的数据   用户名和密码
		     * @return User 对象 包含所有的信息  没有查询到 则返回一个null值
		     */
		    public User login(User loginUser){
		        try {
		            // bian写sql
		            String sql = "SELECT * FROM USER WHERE USERNAME = ? and PASSWORD= ? ";
		            // 调用query 方法
		            User user = template.queryForObject(sql,
		                    new BeanPropertyRowMapper<User>(User.class),
		                    loginUser.getUsername(),loginUser.getPassword());
		
		            return user;
		        } catch (DataAccessException e) {
		            e.printStackTrace(); //记录日志
		
		            return null;
		        }
		    }
		}
* 创建JDBCUtils工具类

		package cn.itcast.utils;	

		import com.alibaba.druid.pool.DruidDataSourceFactory;
		import javax.sql.DataSource;
		import java.io.IOException;
		import java.io.InputStream;
		import java.sql.Connection;
		import java.sql.SQLException;
		import java.util.Properties;
		
		/**
		 * @Author: Qin Pengcheng
		 * @CreateDate: 2018/9/22 11:24
		 * @Description: 工具类 Durid连接池
		 */
		public class JDBCUtils {
		    // 定义成员变量
		    private static DataSource ds; //初始化是一个null值
		    //根据Druid连接池h获取数据库中的数据 写在静态代码块中
		    static {
		
		        try {
		            // 1.加载配置文件
		            Properties prop = new Properties();
		            //使用ClassLoad加载配置文件,获取字节输入流
		            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
		            prop.load(is);
		            //2.初始化连接池
		            ds= DruidDataSourceFactory.createDataSource(prop);
		
		        } catch (IOException e) {
		            e.printStackTrace();
		        } catch (Exception e) {
		            e.printStackTrace();
		        }
		    }
		
		    /**
		     * 获取连接池对象
		     */
		
		    public static DataSource getDataSource(){
		        return ds;
		    }	
		
		    /**
		     * 获取链接Connection对象
		     */
		
		    public static Connection getConnection() throws SQLException {
		        return ds.getConnection();
		    }
		
		}

*  创建Servlet的类,
		loginServlet{
			1.设置编码   reqwest()
			2.获取请求参数 getParamerterMap()
      			3.封装对象 BeanUtils.populate( , );
			4.调用UserDao的login方法
			5.判断user是否为null
				是  登陆失败 
				   转发 getRequestDispatcher 
					至failServlet
				否  登陆成功
					存储数据
					转发 getRequestDispatcher 
						至successServlet			
				}

				package cn.itcast.web.servlet;
				
				import cn.itcast.dao.UserDao;
				import cn.itcast.domain.User;
				import org.apache.commons.beanutils.BeanUtils;
				
				import javax.servlet.ServletException;
				import javax.servlet.http.HttpServlet;
				import javax.servlet.http.HttpServletRequest;
				import javax.servlet.http.HttpServletResponse;
				import java.io.IOException;
				import java.lang.reflect.InvocationTargetException;
				import java.util.Map;
				
				/**
				 * @Author: Qin Pengcheng
				 * @CreateDate: 2018/9/22 15:55
				 * @Description:
				 */
				public class LoginServlet extends HttpServlet {
				    @Override
				    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
				        //1。设置编码吧
				        req.setCharacterEncoding("utf-8");
				        //2.获取请求参数
				        Map<String, String[]> map = req.getParameterMap();
				        //3.封装对象
				        User loginUser = new User();
				
				        try {
				            BeanUtils.populate(loginUser,map);
				        } catch (IllegalAccessException e) {
				            e.printStackTrace();
				        } catch (InvocationTargetException e) {
				            e.printStackTrace();
				        }
				       // 4.调用userDao的login方法
				        UserDao dao = new UserDao();
				        User user = dao.login(loginUser);
				        //5.判断user
				        if (user == null){
				            // 是 登陆失败
				            req.getRequestDispatcher("/failServlet").forward(req,resp);
				        }else{
				            //登陆成功
				            //存储数据
				            req.setAttribute("user",user);
				            //转发
				            req.getRequestDispatcher("/successServlet").forward(req,resp);
				        }
				
				
				    }
				
				    @Override
				    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
				        this.doPost(req, resp);
				    }
				}
* 登陆失败
   FailServlet
			dopost{
			   //给页面一句话
				response.setContentType("text/html;charset=utf-8");
			//输出
				response.getWriter().writer(".....");
		}
			
			package cn.itcast.web.servlet;
			
			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;
			
			/**
			 * @Author: Qin Pengcheng
			 * @CreateDate: 2018/9/22 16:07
			 * @Description:
			 */
			@WebServlet("/failServlet")
			public class FailServlet extends HttpServlet {
			    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			    //shezhibianma
			        response.setContentType("text/html;charset=utf-8");
			        //shuchu
			        response.getWriter().write("登陆失败。用户名或密码错误!!!");
			
			    }
			
			    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			    this.doPost(request, response);
			    }
			}

*  登陆成功
	*  	SuccessServlet
			dopost{
			 //1.获取request域中共享的user对象
				getAttribute()
			//2.判断user是否为null
				不是  
					设置编码 输出
				response.setContentType("text/html;charset=utf-8");
				response.getWriter().writer("....");
			}
	
	package cn.itcast.web.servlet;

			import cn.itcast.domain.User;
			
			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;
			
			/**
			 * @Author: Qin Pengcheng
			 * @CreateDate: 2018/9/22 16:07
			 * @Description:
			 */
			@WebServlet("/successServlet")
			public class SuccessServlet extends HttpServlet {
			    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			        //获取request域中公用的对向
			        User user = (User) request.getAttribute("user");
			    //  设置编码
			        response.setContentType("text/html;charset=utf-8");
			            response.getWriter().write("登陆成功,"+user+",欢迎光临!!!");
			    }
			
			    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			    this.doPost(request, response);
			    }
			}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值