尚硅谷SpringMVC代码笔记之SpringMVC_3

SpringMVC运行流程图:

项目结构:

首页index.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

	<a href="helloworld">Hello World</a>

</body>
</html>

service:

package com.atguigu.springmvc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

	//不能注入Controller层
//	@Autowired
//	private HelloWorld helloWorld;

	public UserService(){
		System.out.println("UserService Constructor...");
	}
}

handler控制层:

package com.atguigu.springmvc;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorld {

	@Autowired
	private UserService userService;

	public HelloWorld(){
		System.out.println("HelloWorld Constructor...");
	}

	@RequestMapping("/helloworld")
	public String hello(){
		System.out.println("success");
		System.out.println(userService);
		return "success";
	}

}

Spring配置文件bean.xml:

<?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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<context:component-scan base-package="com.atguigu.springmvc">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
		<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
	</context:component-scan>

	<!-- 配置数据源, 整合其他框架, 事务等. -->

</beans>

SpringMVC配置文件springmvc.xml:

<?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:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<!--
		需要进行 Spring 整合 SpringMVC 吗 ?
		还是否需要再加入 Spring 的 IOC 容器 ?
		是否需要再 web.xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener ?

		1. 需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).
		实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.
		2. 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件
	-->

	<!--
		问题: 若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.
		解决:
		1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分.
		2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解
	-->

	<!--
		SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.
		返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!
	-->

	<context:component-scan base-package="com.atguigu.springmvc" use-default-filters="false">
		<context:include-filter type="annotation"
			expression="org.springframework.stereotype.Controller"/>
		<context:include-filter type="annotation"
			expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
	</context:component-scan>

	<!-- 配置视图解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<mvc:default-servlet-handler/>
	<mvc:annotation-driven></mvc:annotation-driven>

</beans>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC_3</display-name>
  	<!-- 配置启动 Spring IOC 容器的 Listener -->
	<!-- needed for ContextLoaderListener -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:beans.xml</param-value>
	</context-param>

	<!-- Bootstraps the root web application context before servlet initialization -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app>
时间: 2024-08-12 13:39:39

尚硅谷SpringMVC代码笔记之SpringMVC_3的相关文章

尚硅谷SpringMVC代码笔记之SpringMVC_1

项目结构: 用来测试的index.jsp首页视图: index.jsp页面代码: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

尚硅谷SpringMVC代码笔记之SpringMVC_2

项目结构: 首页index.jsp, 员工列表list.jsp, 添加或修改员工input.jsp界面 index.jsp代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//

spring (4.0.2)——(尚硅谷)学习笔记1

1.Spring是什么? ①Spring 是一个开源框架: ②Spring 为简化企业级应用开发而生.使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能. ③Spring是一个IOC(DI) 和 AOP容器框架. 2.具体描述Spring: ①轻量级:Spring是非侵入性的 - 基于Spring开发的应用中的对象可以不依赖于Spring 的 API: ②依赖注入:(DI --- dependency injection . IOC); ③面向切面编程:(AOP ---

2018年尚硅谷《全套Java、Android、HTML5前端视频》

全套整合一个盘里:链接:https://pan.baidu.com/s/1nwnrWOp 密码:h4bw 如果分类里没有请下载下边那些小项教程链接 感谢尚硅谷提供的视频教程:http://www.atguigu.com/ [全套Java教程--打包下载地址]Java基础阶段一.20天横扫Java基础(课堂实录)https://pan.baidu.com/s/1jJpzHv4 二.尚硅谷Java基础实战--Bank项目http://pan.baidu.com/share/link?shareid=

java学习笔记-尚硅谷0918班陈方荣:代码虐我千百遍,我视代码如初恋

伴随着周三考试的结束,尚硅谷北京Java培训第一阶段的学习也以落下帷幕,回顾这段时光,匆匆如流水,不禁感叹时间都去哪了. 分享我的学习经验: 1.加强对自己的控制,降低对自己的容忍度,以后对代码不仅要敲,还要手写. 2.在两天休息的时候对于琐碎的知识点时常复习,特别是细节上的问题. 3.对于复杂的代码,不能仅仅是死记硬背,要尝试去理解. 其实总结一下也就两个字“努力”,智商不够用的时候,这就是唯一的办法了,也是在发现与别人有着巨大差距的时候,心灵上告诫自己还有办法追赶的一种暗示吧,以上便是一个多

java学习笔记-0918班马义*,在大雨磅礴中来到尚硅谷

从9月23号在大雨磅礴中来到尚硅谷java培训,已经过去一月有余.五个月的学习路程已走完20%.第一阶段的考试也结束了.北京Java培训和我以往在大学学习的专业有很大不同,这一个多月的学习也让我的文科生思维慢慢转变过来,java很考逻辑思维,如果面向对象的思想有了,学习java就会容易一些.对于编程,我觉得最好的学习方法就是多敲代码,敲到一定程度,代码都是自然而然从指尖流露出来. 通过一个月的学习,我也慢慢找到了自己学习java的方法,每天晚上的自习时间看今天老师的java视频,根据遗忘曲线,如

java学习笔记-尚硅谷0918班刘蕾*:既然选择了远方,便只顾风雨兼程

从开学以来,一直都过着忙碌的生活,生活很规律,也很辛苦.第一次来到北京java培训这么久,自己一个人离开家这么久,才开始觉得很新鲜,特别享受一个人的感觉,但是时间久了,就想回家,怀念在家被爸妈宠爱的感觉,怀念和小伙伴们一起看电影,吃大餐的日子……但是我知道这些现在也只能想想了,毕竟选择了这条路,就不会轻易的说放弃. 尚硅谷北京java培训老师讲的很好,知识点讲的很细,在听课的时候都能够明白今天讲了什么.晚自习的时候会照着老师的代码敲一遍,然后自己单独敲,当天学的都可以很顺利的敲出来,只是过几天之

java学习笔记-0918班刘昌*:我们选择尚硅谷,也是尚硅谷选择了我们

其实,当我今天开始总结近一个月在java培训的学习期间的各种情况时,说实话,我有点不知道怎么去写,从来没有那么想过,但是还是浅谈一下吧,至少也会对自己的一个阶段有一个清醒的全面的认识. 先从北京java培训的三个方面下手吧,有补充的话,再添加一些拙见了. 一.教学方面:因为目前我们学的都是些基础,我们只是接触过宋红康老师,感觉挺不错的,教的很细致,思路很清晰. 1.当然说比起大学的老师好的多,但是客观来说,大学老师教的侧重点不一样嘛.听以前的同学说,各个老师教学技巧各有千秋,但是总的来说,宋红康

java学习笔记-尚硅谷0918班崔立*:宋老师的知识厚度,对于我们这种渴望知识的学生来讲,可为浩瀚

成长,让我感受到知识的价值与可贵,工作,让我认识到其实学习是一种常态:学校是一个单纯的地方,每个来学习的人都抱着对未来希望和憧憬. 这是我所想的:首先,我们应该先学得一身的好本事.然后就是有些事情要自己亲身去经历和体会,慢慢懂得怎样让自己这样一个体融入社会这个团体,适应社会,甚至于改变社会,这个过程比起单纯的学习知识来讲要漫长的多,没有人会言传身教. 对于在尚硅谷北京java培训的学习,以下是我的感受: 教学方面: 尚硅谷java培训在教学内容的安排上是紧凑,连贯性是很强的,便于初学者去学习和理