IntelliJ IDEA 搭建一个比较完整的网站实例 12

注册功能完成之后,就到了登录功能了。先在主页上添加登录按钮,用来跳转页面到登录界面login.jsp:

index.jsp的代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  


注册 登录

然后在web文件夹下新建login.jsp,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    login




然后在struts.xml中添加login action,代码如下:


            loginSuccess.jsp
        

然后,继续在web文件夹下新建loginSuccess.jsp文件,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


loginSuccess!

然后找到action层的LoginAction类,在类中添加login方法,和username/password变量及其get/set方法,用来获取前台页面上的用户名和密码,然后将用户名和密码传入controller层。完整代码如下:

package com.kay.struts2.Action;

import com.opensymphony.xwork2.ActionSupport;
import com.yiibai.output.OutputHelper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class LoginAction extends ActionSupport {
    private String uname;
    private String username;
    private String password;
    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;
    }
    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    @Override
    public String execute() throws Exception{
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"});
        OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
        String str = output.generateOutput(this.getUname());
        if(str=="SUCCESS")
            return SUCCESS;
        else
            return LOGIN;
    }
    public String login(){
        String username = this.getUsername();
        String password = this.getPassword();
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"});
        OutputHelper output = (OutputHelper)context.getBean("OutputHelper");
        if(output.login(username,password)){
            return SUCCESS;
        }else {
            return ERROR;
        }

    }
}

然后我们去OutputHelper类中添加login方法:

package com.yiibai.output;

public class OutputHelper {
    IOutputGenerator outputGenerator;

    public String generateOutput(String uname){
        return outputGenerator.generateOutput(uname);
    }

    public boolean generateSearchUsername(String username){ return outputGenerator.generateSearchUsername(username);}

    public boolean addUsers(String username,String password){ return outputGenerator.addUsers(username,password);}

    public boolean login(String username,String password){return outputGenerator.login(username,password);}

    public void setOutputGenerator(IOutputGenerator outputGenerator){
        this.outputGenerator = outputGenerator;
    }
}

去IOutputGenerator端口中添加login方法:

package com.yiibai.output;

public interface IOutputGenerator {
    String generateOutput(String uname);
    boolean generateSearchUsername(String username);
    boolean addUsers(String username,String password);
    boolean login(String username,String password);
}

然后在CsvOutputGenerator.java中写login方法的实现:

@Override
    public boolean login(String username,String password){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"spring-config.xml"});
        Address address = (AddressImpl)applicationContext.getBean("address");
        String password0 =address.getPassword(username);
        MD5 md5 = (MD5) applicationContext.getBean("MD5");
        String passwordMD5 =md5.MD5Encode(password,"utf8");
        if(password0.equals(passwordMD5)){
            return true;
        }else{
            return false;
        }
    }

然后找到Address端口,添加getPassword方法:

package Service;

import com.dojo.UserEntity;
import com.dojo.UsersEntity;

import java.util.List;

public interface Address {
    void add(UserEntity ue);
    List selectAll();
    boolean searchUsername(String username);
    boolean addUsers(UsersEntity usersEntity);
    String getPassword(String username);
}

在AddressImpl中写getPassword方法的实现:

@Override
    public String getPassword(String username){
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();
        Query query = session.createQuery("select u from UsersEntity as u where u.username=?0").setParameter(0,username);
        transaction.commit();
        List list = query.list();
        return list.get(0).getPassword();
    }

我们运行一下tomcat,看看有没有错误。主页:

IntelliJ IDEA 搭建一个比较完整的网站实例 12_第1张图片

点击登录:

IntelliJ IDEA 搭建一个比较完整的网站实例 12_第2张图片

输入之前创建的用户名和密码,登录:

IntelliJ IDEA 搭建一个比较完整的网站实例 12_第3张图片

你可能感兴趣的:(java)