編寫攔截器進行攔截,沒有擷取登入賬号則傳回登入界面
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;
}
}