玩了一下SpringMVC, 感觉挺清爽的 好像没有struts那么臃肿( 可能是高级的东西我还不会用 哈 )
例子中一共有俩方法:
一个Controller直接返回字串的方法, 另一个通过Dao层返回用户列表的方法,
前台只是用JSTL简单显示一下返回值,
主要是怕记不住 记在博客里, 算是个入门笔记吧
零:结构
用的是: spring-framework-3.2.4.RELEASE
一:配置文件
1.web.xml
<!--==>1.编码器 --> <filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <!--==>2.核心拦截器 --> <!--核心拦截器还需要一个: 名称-servlet.xml的配置(用于配置HandlerMapping和 HandlerAdapter) --> <servlet> <servlet-name>hello</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <session-config> <session-timeout>20</session-timeout> </session-config>
2.名称-servlet.xml
对于hello这个servlet来说就是 hello-servlet.xml
<!-- 自动搜索 --> <context:component-scan base-package="*.*" /> <!-- HandlerMapping和HandlerAdapter的配置 --> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!-- view层的配置 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"></property> </bean>
二:Controller层
HelloController.java
package com.hello.web.controller; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;//==>@Controller注解 import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.hello.dao.IHelloDao; import com.hello.web.model.User; @Controller @RequestMapping(value="/hello")//==>指定命名空间:http://localhost:8080/HelloSpringMVC/hello public class HelloController { @Resource private IHelloDao helloDao; //==>1.返回helloWorld字串 @RequestMapping(value="/helloWorld")//==>命名空间内具体请求: .../hello/helloWorld public ModelAndView helloWorld(HttpServletRequest requset,HttpServletResponse response) throws Exception { System.out.println("==>start helloWorld()"); //==>ModelAndView是SpringMVC的一个核心对象org.springframework.web.servlet.ModelAndView; ModelAndView mv = new ModelAndView(); mv.addObject("message", "==>Hello SpringMVC!"); //带参数,可以是Object mv.setViewName("/view/hello"); //设置将要跳转的视图 return mv; } //==>2.通过Dao返回List @RequestMapping(value="/userList") public ModelAndView getUserList(HttpServletRequest requset,HttpServletResponse response) throws Exception { System.out.println("==>start getUserList()"); List<User> list = this.helloDao.getList(); ModelAndView mv = new ModelAndView(); mv.addObject("resultList", list); mv.setViewName("/view/userList"); return mv; } }
三:Dao层
接口中不用拿注解做任何配置, daoImpl中需要注解@Service("IHelloDao")
public interface IHelloDao { public User getUserById(Integer uid); public List<User> getList(); }
import org.springframework.stereotype.Service; import com.hello.dao.IHelloDao; import com.hello.web.model.User; @Service("IHelloDao") public class HelloDaoImpl implements IHelloDao { public User getUserById( Integer uid ) { ... } public List<User> getList() {
四:view层
这个就是拿EL 和 JSTL简单输出一下
<body> <br/> ${message} </body>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %> ... <body> <br> <table border="1px" > <c:forEach var="user" items="${resultList}" > <tr align="center" > <td><c:out value="${user.uid}"/></td> <td><c:out value="${user.name}"/></td> <td><c:out value="${user.password}"/></td> <td><c:out value="${user.info}"/></td> </tr> </c:forEach> </table> </body>