SpringMVC入门一:helloWorld


玩了一下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>









原文地址:https://www.cnblogs.com/keanuyaoo/p/3292037.html