编写拦截器进行拦截,没有获取登录账号则返回登录界面
1.首先编写 UserInterceptor.java
package com.itheima.interceptor;
import org.apache.struts2.ServletActionContext;
import com.itheima.domain.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
/**
* 自定义拦截器,判断当前系统是否已经登录,如果登录,继续执行。如果没有登录,跳转到登录页面
* @author Administrator
*/
public class UserInterceptor extends MethodFilterInterceptor{
private static final long serialVersionUID = 335018670739692955L;
/**
* 进行拦截的方法
*/
protected String doIntercept(ActionInvocation invocation) throws Exception {
// 获取session对象
User user = (User) ServletActionContext.getRequest().getSession().getAttribute("existUser");
if(user == null){
// 说明,没有登录,后面就不会执行了
return "login";
}
//发行
return invocation.invoke();
}
}
2.在struts.xml中进行配置,代码如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="crm" namespace="/" extends="struts-default">
<!-- 配置拦截器 -->
<interceptors>
<interceptor name="UserInterceptor" class="com.itheima.interceptor.UserInterceptor"/>
</interceptors>
<global-results>
<result name="login">/login.htm</result>
</global-results>
<!-- 配置用户的模块 -->
<action name="user_*" class="com.itheima.action.UserAction" method="{1}">
<result name="success">/index.htm</result>
<interceptor-ref name="UserInterceptor" >
<!--login方法不拦截 -->
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</action>
<!-- 客户模块 -->
<action name="customer_*" class="com.itheima.action.CustomerAction" method="{1}">
<result name="list">./jsp/customer/list.jsp</result>
<interceptor-ref name="UserInterceptor" />
<interceptor-ref name="defaultStack" />
</action>
</package>
</struts>
3.编写UserAction.java
package com.itheima.action;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts2.ServletActionContext;
import com.itheima.domain.User;
import com.itheima.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
/**
* 用户的模块的控制器
* @author Administrator
*/
public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1305643617977647333L;
/**
* 处理登录功能
* @return
*/
public String login(){
// 这边没有学习功能,封装数据,现在还需要使用request对象
// 怎么获取request方式
HttpServletRequest request = ServletActionContext.getRequest();
// 获取请求参数
Map<String, String[]> map = request.getParameterMap();
User user = new User();
try {
BeanUtils.populate(user, map);
// 调用业务层
User existUser = new UserService().login(user);
// 判断
if(existUser == null){
// 说明,用户名或者密码错误了
return LOGIN;
}else{
// 存入到session中
request.getSession().setAttribute("existUser", existUser);
return "success";
}
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
}
4.然后就是UserService.java
package com.itheima.service;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.itheima.dao.CustomerDao;
import com.itheima.domain.Customer;
import com.itheima.utils.HibernateUtils;
/**
* 客户的业务层
* @author Administrator
*/
public class CustomerService {
/**
* 保存客户
* @param customer
*/
public void saveCustomer(Customer customer){
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
// 调用业务层
new CustomerDao().save(customer);
tr.commit();
}
public List<Customer> findAll(){
Session session = HibernateUtils.getCurrentSession();
Transaction tr = session.beginTransaction();
// 调用业务层
List<Customer> list= new CustomerDao().findAll();
tr.commit();
return list;
}
@Test
public void run1(){
Customer customer = new Customer();
customer.setCust_name("测试");
this.saveCustomer(customer);
}
}
5.编写CustomerDao.java
package com.itheima.dao;
import java.util.List;
import org.hibernate.Session;
import com.itheima.domain.Customer;
import com.itheima.utils.HibernateUtils;
public class CustomerDao {
/**
* 保存客户
* @param customer
*/
public void save(Customer customer){
Session session = HibernateUtils.getCurrentSession();
session.save(customer);
}
/**
* 查询所有客户
*/
public List<Customer> findAll() {
// TODO Auto-generated method stub
Session session = HibernateUtils.getCurrentSession();
List<Customer> list = session.createQuery("from Customer").list();
return list;
}
}