综合案例-登录分析
过程分析完之后,从哪里开始编写比较好,我个人的方法是从业务逻辑开发,只要业务逻辑正确,并通过测试,后面只需要添加web层部分
综合案例-准备工作
(1)创建模块
(2)分包
(3)编写业务逻辑
(4)实现Service
(5)实现Dao
(6)实现DB User
(7)实现Servlet
(8)实现login.html
综合案例-代码实现
(1) UserServiceTest
先业务逻辑
test\java\com\wzx\service\UserServiceTest.java
public class UserServiceTest {
//1:添加Junit测试
@Test
public void test01Login(){
//2:业务逻辑
UserService userService = new UserService();
//3:登录业务
String username="jack";
String password="1235";
//3.1登录就是拿着账号,密码去数据库判断,存在就返回true,否则就返回false
boolean result = userService.login(username,password);
//3.2根返回结果提示用户
if(result){
System.out.println("登录成功");
}else{
System.out.println("账号或者密码出错");
}
}
}
(2) UserService
逻辑清晰了,再编写各种未实现的类与方法
src\com\wzx\service\UserService.java
//用户业务类
public class UserService {
//登录方法
public boolean login(String username, String password) {
//1:当前是业务类方法,按三层架构,要去调Dao
//1.1创建UserDao对象
UserDao userDao = new UserDao();
//1.2创建User对象
User user = new User(username,password);
boolean flag = userDao.find(user);
//1.3返回
return flag;
}
}
(3) User
src\com\wzx\bean\User.java
//用户实体类
public class User {
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
private Long id;
private String username;
private String password;
//get/set
(4) UserDao
src\com\wzx\dao\UserDao.java
//当前是数据访问层
public class UserDao {
//查找方法
public boolean find(User user) {
//按照三层架构,应该查找数据库
return DB.query(user);
}
}
src\com\wzx\db\DB.java
//当前这个DB类用集合来模拟数据库
public class DB {
private static List<User> list = new ArrayList<>();
static {
//静态代码块,当前的类被加载时,执行static代码,只执行一次
User user = new User("jack", "1234");
list.add(user);
User user1 = new User("rose", "1234");
list.add(user1);
User user2 = new User("tony", "1234");
list.add(user2);
}
public static boolean query(User user) {
User result = null;
for (User u : list) {
//遍历每个用户,判断哪个用户的账号密码符合条件
if (u.getUsername().equals(user.getUsername()) && u.getPassword().equals(user.getPassword())) {
result = u;
}
}
//遍历完数据库
if(result==null){
return false;
}else{
return true;
}
}
}
(5) 运行@Test方法
结果正常表示 除web层,其他层都开发完成,并且没有bug存在,接下来再准备一个web层的页面与Servlet
(6) index.html
web\index.html
扫描二维码关注公众号,回复:
11636388 查看本文章
<body>
<form method="post" action="/web02_login_war_exploded/login">
账号:<input type="text" name="username"> <br/>
密码:<input type="password" name="password"> <br/>
<input type="submit" value="登录"> <br/>
</form>
</body>
(7) LoginServlet
src\com\wzx\web\LoginServlet.java
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1:获取参数
String username=request.getParameter("username");
String password=request.getParameter("password");
//2:处理参数
UserService userService = new UserService();
//2.1登录就是拿着账号,密码去数据库判断,存在就返回true,否则就返回false
boolean result = userService.login(username,password);
response.setCharacterEncoding("utf-8");
//2.2根返回结果提示用户
if(result){
//3:响应给浏览器
response.getWriter().println("登录成功");
}else{
response.getWriter().println("账号或者密码出错");
}
}
}
(8)查看访问效果