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/ 进行测试,参考运行界面如下:

 

原创粉丝点击