框架技术-SpringMVC入门

一、入门
1、所需jar包

spring-beans-4.1.2.RELEASE.jar
spring-context-4.1.2.RELEASE.jar
spring-core-4.1.2.RELEASE.jar			
spring-expression-4.1.2.RELEASE.jar	
com.springsource.org.apache.commons.logging-1.1.1.jar

spring-webmvc-4.1.2.RELEASE.jar
spring-web-4.1.2.RELEASE.jar

二、环境搭建
1、web.xml配置核心控制器

<!-- 配置核心控制器,之前我们配置的是我们自己的servlet,今天我们需要配置别人的。名叫dispatcherservlet  -->
<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
<!-- 快捷键ctrl+shift+T调出类搜索面板,拷贝类的全限定名 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载springmvc配置文件 -->
 <init-param>
<!-- 使用DispatcherServlet父类中属性,不能修改,主要功能是指定springmvc配置文件的路径 -->
<param-name>contextConfigLocation</param-name>
<!-- classpath:指的查找资源目录下的文件 -->
<param-value>classpath:springmvc-config.xml</param-value>
 </init-param>
 <!-- tomcat启动的时候,加载配置文件 -->
 <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
 <servlet-name>dispatcherServlet</servlet-name>
 <!-- 
 要拦截所有请求,有三种写法,现在先直接使用/,下午在详细讲解这三种配置
方式1:*.do匹配。核心控制器会放行所有*.do结尾的地址。不会拦截静态资源【不推荐】
方式2:/*,所有的路径都会被拦截,包括静态资源,这种配置只适用于过滤器,在servlet中是错误的配置【不能用!】
方式3:/,拦截所有请求,但是会放行jsp文件,静态资源(图片,css,js文件等)
-->

	<!-- <url-pattern>*.do</url-pattern> -->
<!-- <url-pattern>/*</url-pattern> -->
<url-pattern>/</url-pattern>
</servlet-mapping>

2、springmvc-config.xml配置

<!-- 方式三:使用@controller注解的方式配置
		context:component-scan标签:告诉spring需要扫描哪些包中的类
			base-package属性:配置需要扫描的包名
 -->
<context:component-scan base-package="com.wyc.controller" />
 <!-- 为了放行静态资源
 	mvc:default-servlet-handler会让注解扫描功能失效
  -->
 <mvc:default-servlet-handler/>
 <!-- 让注解扫描功能生效 -->
 <mvc:annotation-driven/>

三、业务处理器的实现
建议使用注解方式

@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index() {
        System.out.println("注解方式");
        return "/WEB-INF/index.jsp";
    }
}

四、三种前端向后端发送数据的方式
1、使用HttpServletRequest对象

@RequestMapping("/send1")
public String send1(HttpServletRequest req) {
	req.setAttribute("name", "李四");
	return "/WEB-INF/index.jsp";
}

2、使用model对象

@RequestMapping("/send2")
public String send2(Model model) {
	model.addAttribute("name", "lisi");
	return "/WEB-INF/index.jsp";
}

3、返回ModelAndView对象

@RequestMapping("/send3")
public ModelAndView send3() {
	ModelAndView mv = new ModelAndView();
	mv.addObject("name", "wangwu");
	mv.setViewName("/WEB-INF/index.jsp");
	return mv;
}

五、五种后端接收数据的方式(有一个变种)
1、使用HttpServletRequest对象

@RequestMapping("/accept1")
public String accept1(HttpServletRequest req) {
	String name = req.getParameter("name");
	String age = req.getParameter("age");
	System.out.println(name);
	System.out.println(age);
	return "/WEB-INF/index.jsp";
}

2、传入与一样类型的参数,适用于参数少的情况下

@RequestMapping("/accept2")
public String accept2(String name,Integer age) {
	System.out.println(name);
	System.out.println(age);
	return "/WEB-INF/index.jsp";
}

3、第二种方式的变种,适用于前端和后端的参数名称不一样的时候

@RequestMapping("/accept3")
public String accept3(@RequestParam("name1")String name,Integer age) {
	System.out.println(name);
	System.out.println(age);
	return "/WEB-INF/index.jsp";
}

4、传入用户对象

@RequestMapping("/accept4")
public String accept4(User user) {
	System.out.println(user);
	return "/WEB-INF/index.jsp";
}

5、传入id

@RequestMapping("/accept5/{id}")
public String accept5(@PathVariable("id") Long id) {
	System.out.println(id);
	return "/WEB-INF/index.jsp";
}

6、还可以获取参数的提交方式,get和post

@RequestMapping(value="/accept6",method=RequestMethod.POST)
public String accept7(User user) {
	System.out.println(user);
	System.out.println("post");
	return "/WEB-INF/index.jsp";
}

六、视图解析器
1、配置视图解析器的xml

  <!-- 配置视图解析器
 		使用的是spring中的一个类
  -->
  <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <!-- 	配置前缀 -->
  	<property name="prefix" value="/WEB-INF/"></property>
  	<!-- 配置后缀 -->
  	<property name="suffix" value=".jsp"></property>
  </bean>

2、访问WEB-INF下面的views下面的user

@RequestMapping("/view2")
public String view2() {
	System.out.println("视图解析器访问user");
	return "views/user";
}

七、请求转发和重定向
1、请求转发:

@RequestMapping("/view3")
public String view3() {
    System.out.println("forward请求转发");
    return "forward:/WEB-INF/student/stu.jsp";
}

2、重定向
如果把值放到request请求,下一个页面不能取出

@RequestMapping("/view4")
public String view4() {
	System.out.println("redirect重定向");
	return "redirect:/view3";
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春花.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值