spring mvc基础篇(十二):综合案例一
来源:互联网 发布:义乌淘宝美工学校 编辑:程序博客网 时间:2024/06/07 02:29
12.1 springmvc核心流程图及讲解
知识讲解:DispatcherServlet(前端控制器)
1.应用了“Front Controller”模式 – 是所有 Spring MVC 请求的中枢。
2.继承了HttpServlet,是一个Servlet,由WebApplicationContext加载
3.如果不作其它配置,会加载默认组件
HandlerMapping(映射处理器)
1.将web请求映射到正确的处理器(handler)上, 通常是一个 Controller
2.不需用自定义处理器映射–已经内置了很多处理器映射策略
3.在处理器映射中通过配置拦截器(包括处理器执行前、执行后、或者执行前后运行拦截器)将使其功能更强大
Controller (后端控制器)
1.负责处理请求
2.内部参数继承 HttpServlet
handleRequest(HttpServletRequest,HttpServletResponse)
3.返回一个 ModelAndView对象
4.所有实现都是线程安全的
5.基本不用自己实现接口 – 已经提供了很多实用的实现类
ModelAndView 对象
1.封装了用来渲染页面的 model和view
2.Model 用 java.util.Map实现的
3.添加对象,可以不需用名字:
addObject(String, Object) – 用显式名字添加
addObject(Object) – 用默认名添加 (惯例优先)
4.View 用 String 或View 对象表示
5.类似 Struts的Action
Interceptors(拦截器)
1.在请求前后添加其它功能
2.包括拦截器方法 – preHandle and postHandle
3.包括回调方法 – afterCompletetion
4.可以通过 HandlerMapping 和一系列Controller关联上
ViewResolver(视图解析器)
1.从一个逻辑视图名映射到一个视图对象
2.可以排序, 所以能链在一起
3.对JSP用户,通常实现
InternalResourceViewResolver:
<beanid="internalResourceViewResolver" …
<propertyname="prefix" value="/WEB-INF/jsp/" />
<propertyname="suffix" value=".jsp" />
</bean>
4.其它ViewResolver实现
(1)VelocityViewResolver – 针对Velocity templates设计的
(2)FreeMarkerViewResolver– 针对FreeMarker templates设计的
(3)ResourceBundleViewResolver 映射关系在一个 properties 文件,支持国际化
(4)XmlViewResolver – 映射关系在XML文件
View(视图)
1.支持的几种视图模板技术:
InternalResourceView (JSP)
JstlView (JSP + JSTL)
VelocityView (Velocity)
FreeMarkerView (FreeMarker)
TilesView (Tiles)
TilesJstlView (Tiles + JSTL)
2.还支持渲染下列视图
Excel files
PDF files
XSLT results
Jasper Reports
12.2 开发环境
开发工具:myeclipse8.6.1
数据库:mysql5.5.23
服务器: tomcat6.0.37
框架版本: spring3.2.2
12.3 结合jdbc,tomcat数据源对学生数据进行增删改查的管理
步骤一:在myeclipse8.6中新建web工程springmvczh01,拷贝如下包到lib目下:
步骤二:编写web.xml 配置文件,代码如下:
=================================web.xml========================
<?xmlversion="1.0" encoding="UTF-8"?>
<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 配置spring的字符集过滤 -->
<filter>
<filter-name>encode</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
</web-app>
================================================================
步骤三:在mysql里面建立数据库,插入测试数据
=========================studentdb.sql==============================
/*
SQLyog Community v11.01 (32bit)
MySQL - 5.5.23: Database - schooldb
*********************************************************************
*/
CREATE DATABASEif not exists studentdb DEFAULT CHARACTER SET utf8;
USE studentdb;
DROP TABLEIF EXISTS users;
CREATE TABLE users
(
userId INT PRIMARY KEY AUTO_INCREMENT,
userName VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
)AUTO_INCREMENT=100
;
INSERT INTOusers(userName,PASSWORD)VALUES('jack','123');
INSERT INTOusers(userName,PASSWORD)VALUES('麻子','123');
DROP TABLEIF EXISTS Student;
CREATE TABLE Student
(
stuId INT PRIMARY KEY,
stuName VARCHAR(20) NOT NULL,
gender CHAR(2),
age INT,
email VARCHAR(20),
address VARCHAR(100)
);
INSERT INTO StudentVALUES(9527,'周星星','男',32,'zxx@qq.com','学生宿舍');
INSERT INTO StudentVALUES(110,'刘德华','男',35,'ldh@qq.com','香港');
INSERT INTO StudentVALUES(111,'范冰冰','女',29,'fbb@qq.com','大陆');
INSERT INTO StudentVALUES(112,'容嬷嬷','女',39,'rmm@qq.com','大陆');
INSERT INTO StudentVALUES(911,'本拉登','男',59,'bld@qq.com','阿富汗坎大哈');
INSERT INTO StudentVALUES(1939,'希特勒','男',65,'xtl@qq.com','德国柏林');
INSERT INTO StudentVALUES(9999,'黑山老妖','妖',99,'hsly@qq.com','黑山老林');
INSERT INTO StudentVALUES(999,'东方不败','男',66,'dfbb@qq.com','黑木崖');
=====================================================================
步骤四:在tomcat里面配置数据源:
====================================================================
1.在tomcat的conf目录下找到context.xml,添加如下配置,请自行修改用户名和密码
<Resourcename="ds_mysql5.x"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/studentdb"
username="root"
password="admin"
initialSize="1"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
2.将mysql驱动包mysql-connector-java-5.1.26-bin.jar拷贝到tomcat的lib目录==================================================================
步骤五:在核心配置文件springmvc-servlet.xml里面编写如下配置
======================== springmvc-servlet.xml=======================
<beans>
<beanid="resourceView"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="prefix"value="/"></property>
<propertyname="suffix"value=".jsp"></property>
</bean>
<beanid="simpleUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<propertyname="mappings">
<props>
<propkey="/Login.php">userControl</prop>
<propkey="/quit.php">userControl</prop>
<propkey="/QueryStu.php">queryAllStuControl</prop>
<propkey="/AddControl.php">stuOptControl</prop>
<propkey="/DeleteControl.php">stuOptControl</prop>
<propkey="/QueryOne.php">stuOptControl</prop>
<propkey="/DoModify.php">stuOptControl</prop>
</props>
</property>
</bean>
<beanid="userControl"class="com.stu.controls.UserControl">
<propertyname="methodNameResolver"ref="springMethodNameResolver">
</property>
</bean>
<beanid="queryAllStuControl"class="com.stu.controls.QueryStuControl">
<propertyname="methodNameResolver"ref="springMethodNameResolver">
</property>
</bean>
<beanid="stuOptControl"class="com.stu.controls.StudentOptControl">
<propertyname="methodNameResolver"ref="springMethodNameResolver">
</property>
</bean>
<beanid="springMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<propertyname="mappings">
<props>
<propkey="/Login.php">login</prop>
<propkey="/quit.php">quit</prop>
<propkey="/QueryStu.php">queryAllStu</prop>
<propkey="/AddControl.php">doAdd</prop>
<propkey="/DeleteControl.php">doDelete</prop>
<propkey="/QueryOne.php">doQueryOne</prop>
<propkey="/DoModify.php">doModify</prop>
</props>
</property>
</bean>
</beans>
====================================================================
步骤六:其它代码不一一列出,只给出截图参考,需要的朋友请联系作者wx5040257@126.com :
==================================================================
步骤七: 启动tomcat,发布项目,在地址栏输入 http://localhost:8080/springmvczh01/ 进行测试,参考运行界面如下:
- spring mvc基础篇(十二):综合案例一
- spring mvc基础篇(十三):综合案例二(注解版)
- spring mvc基础篇(一):入门案例
- Android基础综合案例(一)
- Spring MVC 一 基础学习
- Android基础综合案例(二)
- Android基础综合案例(四)
- Java数组基础综合案例
- Spring+MVC+MyBatis综合例子
- SpringMVC核心一(Spring web mvc基础)
- Spring MVC 学习案例
- Spring MVC 学习案例
- Spring MVC 学习案例
- spring mvc简单案例
- spring mvc 简单 案例
- Spring MVC 简单案例
- Spring MVC Hello案例
- Spring Mvc-入门案例
- 每日一题——判断二叉树是否平衡,求一棵二叉树的镜像
- 方法内部类
- 小结 | 函数的调用过程(栈帧)
- 安卓工作室android studio 美化 ,设置背景图片。
- Hdu6098 Inversion(2017多校第6场)
- spring mvc基础篇(十二):综合案例一
- 8.10抽象类与接口
- CentOS下安装Python3后BeautifulSoup 版本不兼容问题解决方法
- [编程题] Fibonacci数列
- ubuntu server 16.04安装与网络配置
- android studio 代码模板
- fragment 切换,导航栏是图标加文字
- MySQL 调优/优化的 100 个建议
- 方法中定义一个内部类对象时,如何在内部类对象中使用调用该方法的当前对象的其他方法