spring mvc學習(四)之工程代碼

前四篇發了spring mvc的配置,這一篇我把spring mvc的工程代碼和jar包發出來。

先發controller層的代碼

@Controller("userController")
@RequestMapping("/user.do")
public class UserController {

	@Resource
	private UserService userService;

	@RequestMapping(params = "method=reg")
	public String reg(User user){
		System.out.println("用戶註冊");
		if (userService.exist(user)) {
			return "reg_fail";
		}
		userService.add(user);
		return "reg_success";
	}

	@RequestMapping(params = "method=log")
	public String log(User user) {
		System.out.println("用戶登錄");
		if (userService.login(user)) {
			return "log_success";
		}
		return "log_fail";
	}
}
再發下service層的代碼

@Service("userService")
public class UserService {
	@Resource
	private UserDao userDao;
	@Autowired
	TestService testService;
	
	public void add(User user){
		userDao.add(user);
		//User user2=new User();
		//user2.setName("789");
		//user2.setPassword("789");
		//testService.save(user2);
	}

	@Transactional(propagation=Propagation.REQUIRED)
	public boolean exist(User user) {
		return userDao.findUser(user);
	}

	@Transactional(propagation=Propagation.NEVER)
	public boolean login(User user) {
		return userDao.userLogin(user);
	}
}


再發下dao層的代碼

@Repository("userDao")
public class UserDao {
	@Resource
	private HibernateTemplate hibernateTemplate;
	public void add(User u) {
		hibernateTemplate.save(u);
	}

	
	public boolean findUser(User u) {
		List<?> list = hibernateTemplate.find("from User u where u.name=?",
				u.getName());
		if (list.size() > 0) {
			return true;
		}
		return false;
	}
	public boolean userLogin(User u) {
		List<?> list = hibernateTemplate.find(
				"from User u where u.name=? and u.password=?", u.getName(),
				u.getPassword());
		if (list.size() > 0) {
			return true;
		}
		return false;
	}
}

再發下實體類的代碼

@Entity
public class User {
	private int id;
	private String name;
	private String password;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}
最後發下aop異常處理的代碼

public class Aspect {
	 Logger logger = Logger.getLogger(UserController.class);  
	    String strLog = null ;  
	      
	    /** 
	     * 前置通知:在某連接點之前執行的通知,但這個通知不能阻止連接點前的執行 
	     * @param jp 連接點:程序執行過程中的某一行爲,例如,AServiceImpl.barA()的調用或者拋出的異常行爲 
	     */  
	    public void doBefore(JoinPoint jp) {  
	        strLog = "log Begining method: "  
	                + jp.getTarget().getClass().getName() + "."  
	                + jp.getSignature().getName();  
	        logger.warn(strLog);  
	    }  
	    /** 
	     * 環繞通知:包圍一個連接點的通知,可以在方法的調用前後完成自定義的行爲,也可以選擇不執行 
	     * 類似Web中Servlet規範中的Filter的doFilter方法。 
	     * @param pjp 當前進程中的連接點 
	     * @return 
	     * @throws Throwable 
	     */  
	    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {  
	        long time = System.currentTimeMillis();  
	        Object retVal = pjp.proceed();  
	        time = System.currentTimeMillis() - time;  
	        System.out.println("process time: " + time + " ms");  
	        return retVal;  
	    }  
	    /** 
	     * 拋出異常後通知 : 在方法拋出異常退出時執行的通知。 
	     * @param jp 連接點:程序執行過程中的某一行爲,例如,AServiceImpl.barA()的調用或者拋出的異常行爲 
	     */  
	    public void doAfter(JoinPoint jp) {  
	        strLog ="doAfter:log Ending method: "  
	                + jp.getTarget().getClass().getName() + "."  
	                + jp.getSignature().getName();   
	        logger.warn(strLog);  
	    } 
	    
	   public void doAfterThrow(JoinPoint jp,Exception e){
	        System.out.println("*****************異常信息如下**************");
	        System.out.println("method " + jp.getTarget().getClass().getName()
	        + "." + jp.getSignature().getName() + " throw exception");
	        //System.out.println(e.fillInStackTrace());
	       
	        StringWriter   sw=new   StringWriter();   			
	        e.printStackTrace(new PrintWriter(sw));
	        
	        //System.out.println(sw.toString());
	        //System.out.println(e.getMessage());
	        //System.out.println("異常通知------"+e.getMessage());
	        
	        logger.warn(sw.toString());
	    }
	    /*@AfterThrowing(pointcut="anyMethod()",throwing="e")  
	    public void doAfterThrow(Exception e){  
	        System.out.println("異常通知------"+e.getMessage());  
	    }  */
}

jar包連接:http://download.csdn.net/detail/u014274324/7822635

工程連接:http://download.csdn.net/detail/u014274324/7822705


發佈了39 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章