spring mvc学习(四)之工程代码

本文分享了一个SpringMVC项目的完整代码实现,包括Controller、Service、DAO层及实体类的详细示例,并提供了AOP异常处理机制的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前四篇发了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.youkuaiyun.com/detail/u014274324/7822635

工程连接:http://download.youkuaiyun.com/detail/u014274324/7822705


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值