文档章节

Android_登录之服务器逻辑

seecheng
 seecheng
发布于 2015/02/03 10:51
字数 718
阅读 1578
收藏 8

    《Android_登录之客户端逻辑》文中讲到LoginActivity获取账户和密码框字符,通过servlet(LoginServlet)传递数据至服务器,并接受反馈信息以处理登录逻辑。下面来详解LoginServlet的实现方法。

1.LoginServlet

package com.amaker.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.amaker.dao.UserDao;
import com.amaker.dao.impl.UserDaoImpl;
import com.amaker.entity.User;
/*
 * 实现登陆功能
 * @author shichengwu
 * @site www.shichengwu.com
 */
public class LoginServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		UserDao dao = new UserDaoImpl();
		// 获得客户端请求参数
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println("获得用户名"+username);
		System.out.println("获得密码"+password);
		User u = dao.login(username, password);
		if(u!=null){
			// 响应客户端内容,登录成功
			out.print(build(u));
		}else{
			// 响应客户端内容,登录失败
			out.print("0");
		}
		out.flush();
		out.close();
	}
	
	private String build(User u){
		String userMsg = "";
		userMsg+="id="+u.getId();
		userMsg+=";";
		userMsg+="name="+u.getTruename();
		return userMsg;
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);
	}
	public void init() throws ServletException {
	}	
	public LoginServlet() {
		super();
	}
	public void destroy() {
		super.destroy();
	}
}

 

2.数据库封装实体类 User

package com.amaker.entity;

/**
 * 用于封装User表的实体类
 * @author shichengwu
 * @site www.shichengwu.com
 */
public class User {
	// 编号
	private int id;
	// 账号
	private String username;
	// 密码
	private String password;
	// 用户名称
	private String truename;
	// 性别

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getTruename() {
		return truename;
	}
	public void setTruename(String truename) {
		this.truename = truename;
	}	
}

 

3.接口UserDao

package com.amaker.dao;

import com.amaker.entity.User;
/* UesrDao 接口
 * @author shichengwu
 * @site www.shichengwu.com
 */
public interface UserDao {
	// 登录方法
	public User login(String username,String password);
	public User login1(String username, String password);
}

 4.数据库交互实现 UserDaoImpl

package com.amaker.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.amaker.dao.UserDao;
import com.amaker.entity.User;
import com.amaker.util.DBUtil;
/**
 * 用户登录DAO实现类
 * @author shichengwu
 * @site www.shichengwu.com
 */
public class UserDaoImpl implements UserDao {
	
	/**
	 * 通过用户名称和密码登录,登录成功返回User对象,登录失败返回null
	 */
	public User login(String username, String password) {
		// 查询SQL语句
		String sql = " select id,username,password,true_name from kl_user"+
						" where username=? and password=?";
		// 数据库连接工具类
		DBUtil util = new DBUtil();
		// 获得连接
		Connection conn = util.openConnection();
		try {
			// 获得预定义语句
			PreparedStatement pstmt = conn.prepareStatement(sql);
			// 设置查询参数
			pstmt.setString(1, username);
			pstmt.setString(2, password);
			// 执行查询
			ResultSet rs = pstmt.executeQuery();
			// 判断用户是否存在
			if (rs.next()) {
				// 获得用户信息
				int id = rs.getInt(1);
				String truename = rs.getString(4);
				// 封装用户信息
				User u = new User();
				
				u.setId(id);
				u.setUsername(username);
				u.setPassword(password);
				u.setTruename(truename);
				return u;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			util.closeConn(conn);
		}
		return null;
	}


5 JDBC配置
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@192.168.1.49:1521:orcl
username=XX
password=XX

至此,服务器端设计完毕,加上上一篇文章设计的客户端逻辑,一个完整的登陆实例构建成功,至于页面Layout,画一个账户输入框、一个密码输入框,外加一个button点击登录,就很容易了,登录逻辑、账户及密码框的获取验证在本文和上文中均已完成。

© 著作权归作者所有

seecheng
粉丝 6
博文 7
码字总数 3017
作品 0
武汉
程序员
私信 提问
加载中

评论(1)

DVQ
DVQ
感谢
Android MVP架构实现

最近在学习Android的MVP架构,在网上找了许多资料都没有一个清晰的认识,偶然看到简书上骆驼骑士前辈的文章,对MVP的实现过程有了一个较为清晰的认识。后又研究了一下Google官方Demo,分别对...

君琬
2018/11/30
0
0
the record of first meeting

网页前端 jQuery ecui(这个是音译) html5 安卓端 支付推荐用微信支付。和微信公众号有关系,微信的内置浏览器可以做支付。 安卓的客户端也是有框架的,数据库也是有框架的 服务端需要做的事...

bleuesprit
2015/09/21
4
0
快被搞死了,需要紧急求助!(已解决)

情况是这样的: 公司开发页游,用户登录后,页面会通过ajax向后端的服务器(LAMP)获取服务器列表,正在获取的时候有个转圈的动画在显示LOADING,获取到后页面就出现服务器列表了! 问题是这...

沙-漠
2013/07/17
942
12
修改源码,使volley框架下支持发送和读取cookie

本文为原创,转载请注明出处,否则将依法追究版权 修改源码,让不支持cookie发送的volley框架支持cookie 我们平时开发android应用都需要用到网络技术,通常采用http协议来发起请求并接受网络...

刘小米
2014/12/29
10.3K
11
浅谈Activity,Fragment模块化封装

欢迎大家访问我的博客:博客地址 概述 继承关系 这里的继承关系大家肯定十分熟悉了,这里贴出的是v4包中fragment,可以看出fragment是直接继承于object的,与四大组件没有任何关系。 两者之间...

stone_zhu
2018/06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux负载均衡总结性说明 四层负载和七层负载有什么区别

这篇文章主要为大家详细介绍了linux负载均衡的相关资料,什么是负载均衡?四层负载和七层负载有什么区别?具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在常规运维工作中,经常会运用到...

天子剑毅
4分钟前
1
0
mysql in与or效率比较

在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看《mysql数据库开发的36条军规》的文章,里面提到了or和in的效率问题,文中提到or的效率为O(n),而in的效率为O(l...

whatwhowhy
5分钟前
1
0
使用docker 基于pxc镜像搭建mysql高可用集群

前置条件 docker已安装: 第一步:拉取镜像 docker pull percona/percona-xtradb-cluster:5.7.21 第二步:复制重命名镜像(可选) docker tag percona/percona-xtradb-cluster:5.7.21 pxc 第...

小海bug
10分钟前
2
0
windows安装nginx负载均衡

第一步:下载安装nginx 地址:http://nginx.org/en/docs/windows.html 下载完成,比如放在C盘根目录下: cd c:\ unzip nginx-1.15.3.zip //解压文件 cd nginx-1.15.3 //进入目录 start ngin...

你好夜故事
13分钟前
1
0
Jenkins CLI,助你轻松管理 Jenkins

本文首发于:Jenkins 中文社区 作者:Donghui Wang Jenkins CLI,简称 jcli,一个使用 Golang 开发的开源的 Jenkins 命令行工具。 它可以帮忙你轻松地管理 Jenkins。 无论你是 Jenkins 插件开...

Jenkins中文社区
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部