1,配置文件java
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- <mvc:annotation-driven/> --> <!-- 扫描器存在就不须要使用注解驱动 @Controller @Service 在业务逻辑层 @repository 在Dao层 @Component(实际项目中用于无发分层的类,可是也想使用spring来管理) 以上做用于类上 @Autowired 类与类之间之间的关系 @Resources 对于controller层,须要对其加@controller注解 --> <context:component-scan base-package="com.sxx.controller"></context:component-scan> <!-- 视图解析器的配置 前缀是全部jsp的公共路径 后缀是全部视图的后缀名 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
2.controller类web
package com.sxx.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/test") public class TestController { /** * * @return String 类型表明modelandview中的viewname,就是视图解析器前缀和后缀中间的路径。 * @RequestMapping指定方法和类的映射,便是能够放在方法上也能够放在类上。下面指定的是方法。 */ @RequestMapping("/hello.do") public String hello(){ return "index"; } }
3.访问路径:若是在controller类上加有@RequestMapping(“/test”)(括号内的是路径)spring
localhost:8080/工程名/test/hello.do数组
若是不加类上的@RequestMappingsession
访问路径是:localhost:8080/工程名/hello.domvc
4.参数的接收app
package com.sxx.controller; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.Servlet; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/test")//能够加在类上用于区分方法名相同可是类不一样的方法。 public class TestController { public TestController(){ System.out.println("controller 被建立"); } /** * * @return String 类型表明modelandview中的viewname,就是视图解析器前缀和后缀中间的路径。 * @RequestMapping指定方法和类的映射,便是能够放在方法上也能够放在类上。下面指定的是方法。 */ @RequestMapping("/hello.do") public String hello(){ return "index"; } /** * @param req在参数列表中直接定义可使用,response,session相同 * @return */ @RequestMapping("/revParam.do") public String revParam(HttpServletRequest req){ String name = req.getParameter("name"); System.out.println(name); return "index"; } /** * 走的仍是HttpServletRequest, * 能够直接在参数列表中定义要接受的参数,可是参数的变量名必定要和请求中的实参的参数名一致。 * 参数的数据类型必须能转换 * @param name * @return */ @RequestMapping("/revParam1.do") public String revParam1(String name,Integer id,Date birthday){ System.out.println(name); System.out.println(id); System.out.println(birthday); return "index"; } /** * 数组方式的接收多选的参数列表,要求数组变量名和请求的参数的名一致 * @param fav * @return */ @RequestMapping("/revParam2.do") public String revParam2(String[] fav){ for(String fa :fav){ System.out.println(fa); } return "index"; } /** * 接收自定义实体对象 * 直接在参数列表中定义要接受的对象便可,不须要关心对象的变量名, * 可是必需要把实体类对象的属性和参数的名字对应上才能接收到值 * 单例的,由于每一个线程都会建立一个新的对象。struts是多例的。 * @param * @return */ /*@RequestMapping("/revParam3.do") public String revParam3(Person p){ System.out.println(p); return "index"; }*/ /** * 直接转发到form.jsp的页面 * @return */ @RequestMapping("/toForm.do") public String toForm(){ return "form"; } /** * 绑定时间类型的属性编辑器 * @param binder */ @InitBinder public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } }
5.springmvc中结果返回给视图的示例jsp
/**controller类中 * 麻烦,不建议使用 * @return */ @RequestMapping("/returnResult.do") public ModelAndView returnResult(){ Person p = new Person(); p.setId(1); p.setName("shandaxin"); p.setBirthday(new Date()); Map<String, Person> map = new HashMap<String, Person>(); //request.setAttribute("p",p); map.put("p", p); return new ModelAndView("return",map); }
/**
*return.jsp页面中
*/
<body>
<h1>${p.id }</h1> <br>
<h1>${p.name }</h1> <br>
<h1><fmt:formatDate value="${p.birthday }" pattern="yyyy-MM-dd HH:mm:ss"/> </h1> <br>
</body>编辑器
方法2:spa
/** * * @param map方法中的map不是为了接收参数的,是为了网页面上传数据的集合。 * 后台走的依旧是modelandview,不建议使用 * @return */ @RequestMapping("/returnResult1.do") public String returnResult1(Map<String, Object> map){ Person p = new Person(); p.setId(1); p.setName("shandaxin"); p.setBirthday(new Date()); map.put("p", p); return "return"; }
方法3:
/** * * @param 在参数列表中使用model,model.addAttribute("p", p);最为经常使用。 * @return */ @RequestMapping("/returnResult2.do") public String returnResult2(Model model){ Person p = new Person(); p.setId(1); p.setName("shandaxin"); p.setBirthday(new Date()); model.addAttribute("p", p); return "return"; }