您的位置:首页 > 编程语言 > Java开发

springmvc + hibernate构建web工程(二)

2015-07-20 17:17 399 查看
上篇主要说的是在springMVC构建WEB工程时的一些配置,现在来说说其他部分。

controller

以登录为例如下:

@Controller
public class LoginController {

private LoginService loginService;

@Resource
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}

@RequestMapping("login.do")
public ModelAndView login(String username, String password,
HttpSession session, HttpServletResponse response) {

HashMap resultMap = new HashMap();

HashMap result = loginService.checkLogin(username, password);
if ("true".equals(result.get("code"))) {
session.setAttribute("user", result.get("user"));
resultMap.put("code", "true");
resultMap.put("username", username);
resultMap.put("password", password);
return new ModelAndView("admin-index", resultMap);

} else {
resultMap.put("code", "false");
return new ModelAndView("index", resultMap);
}
}
}


@Controller: 表示该类是一个controller,也就是action组件, spring不要求我们继承任何controller相关的基类或者引用相关的servlet API。为了使这些声明生效,我们需要在配置文件中添加下面的一行:

<context:component-scan base-package="com.my.xx"/>


@Resource: 用于注入,默认按名称装配,表示将loginService注入到该类中

@RequestMapping:请求映射,表示将login.do为结尾的请求映射到该方法处理

这里面还有一个很常见的@ResponseBody注解,它表示将内容或者对象作为HTTP响应正文返回,并调用适合的HttpMessageConverter的Adapter转换对象,写入输出流。按照上节的配置,会将内容或者对象转换成JSON返回

<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>


Service

在上面,我们注入了loginService,loginService是接口的一个实例

public interface LoginService {

public HashMap checkLogin(String username, String password);
}


@Service
public class LoginServiceImpl implements LoginService {

private LoginDao loginDao;
@Resource
public void setLoginDao(LoginDao loginDao){
this.loginDao = loginDao;
}

@Transactional
public HashMap checkLogin(String username, String password){
HashMap result = loginDao.checkLogin(username, password);

return result;
}
}


@Service: 表示service组件

@Transactional: 用于事务管理

Dao

在service中,我们注入了loginDao

public interface LoginDao {

public HashMap checkLogin(String username, String password);
}


@Repository
public class LoginDaoImpl implements LoginDao {

private SessionFactory sessionFactory;

@Resource
public void setSessionFactory(SessionFactory sessionFactory){
this.sessionFactory = sessionFactory;
}

public HashMap checkLogin(String username, String password){

HashMap resultMap = new HashMap();
Session session = sessionFactory.getCurrentSession();

Query query = session.createQuery("from User where username = ? and password = ?");
query.setParameter(0, username);
query.setParameter(1, password);
List<User> users = query.list();

if(users.size() > 0){
resultMap.put("code", "true");
resultMap.put("user", users.get(0));
}else{
resultMap.put("code", "false");
}

return resultMap;
}
}


@Repository: 声明一个Dao组件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: