注解
@Controller
@RequestMapping(value = "user")
public class TUserController {
@Autowired
private TUserService tUserService;
@RequestMapping("/userList")
public ModelAndView userList() {
System.out.println("--->开始执行control userList方法");
List<TUser> ulist = tUserService.getUserList();
System.out.println(ulist.toString());
return new ModelAndView("list", "ulist", ulist);
}
}
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法。通俗来说,被Controller标记的类就是一个控制器,这个类中的方法,就是相应的动作。
@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。跳转到页面的路径就是localhost:8080/xxxxx/user/userList
@Service(value="tUserService")
public class TUserServiceImpl implements TUserService{
@Autowired
public TUserDao tUserDao;
@Override
public List<TUser> getUserList() {
// TODO Auto-generated method stub
return null;
}
}
@Service("tUserService")注解是告诉Spring,当Spring要创建TUserService的实例TUserServiceImpl时,bean的名字必须叫做"tUserService"。
@Repository(value="tUserDao")
public class TUserDaoImpl implements TUserDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public List<TUser> getTUserList() {
Session session = sessionFactory.openSession();
Transaction ts = session.beginTransaction();
Query query = session.createSQLQuery("select * from t_user").addEntity(TUser.class); // 返回对象
ts.commit();
List<TUser> listTUser = query.list();
System.out.println("List 结果集: " + listTUser.toString());
session.close();
return listTUser;
}
}
Repository(value="tUserDao")注解是告诉Spring,让Spring要创建TUserDao的实例TUserDaoImpl时,bean的名字必须叫做"tUserDao"。
@Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,我们也要清楚,@Autowired是根据类型进行自动装配的。
ModelAndView
web.xml里配置
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置Spring mvc下的配置文件的位置和名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
spring-mvc.xml里配置
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<property name="prefix" value="/jsp/"></property><!-- 视图文件的前缀 -->
<property name="suffix" value=".jsp"></property><!-- 视图文件的后缀名 -->
</bean>
@RequestMapping("/userList")
public ModelAndView userList() {
System.out.println("--->开始执行control userList方法");
List<TUser> ulist = tUserService.getUserList();
System.out.println(ulist.toString());
return new ModelAndView("list", "ulist", ulist);
}
跳转到页面的路径就是localhost:8080/xxxxx/jsp/list.jsp
传递的参数就是"ulist", ulist
<c:forEach items="${requestScope.ulist}" var="user" varStatus="x">
<tr>
<td>${user.id}</td>
<td>${user.userName}</td>
<td>${user.age}</td>
</tr>
</c:forEach>