注册功能完成之后,就到了登录功能了。先在主页上添加登录按钮,用来跳转页面到登录界面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,看看有没有错误。主页:
点击登录:
输入之前创建的用户名和密码,登录: