04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介紹
1.1市面上流行的框架
-
Struts2(比較多)
-
Springmvc(比較多而且屬于上升的趨勢)
-
Struts1(即將被淘汰)
-
其他
1.2??spring-mvc結構
?DispatcherServlet:中央控制器,把請求給轉發到具體的控制類
Controller:具體處理請求的控制器(配置文件方式需要配置,注解方式不用配置)
handlerMapping:映射處理器,負責映射中央處理器轉發給controller時的映射策略
ModelAndView:服務層返回的數據和視圖層的封裝類(無論是配置文件還是注解都不需要配置)
ViewResolver? & View:視圖解析器,解析具體的視圖
Interceptors :攔截器,負責攔截我們定義的請求然后做處理工作(無論是配置文件方式還是注解都需要先創建再配置)
紅色的是需要自己創建,黑色的需要配置。
1.4spring-mvc流程
?
2.spring-mvc的第一個例子
1. 創建一個web工程
2. 導入依賴包
3.創建springmvc的配置文件
-
配置中央控制
創建springmvc的核心配置文件
文件的命名規則:中央控制器(servlet的名稱)的名稱+“-servlet.xml”
默認位置:WEB-INF下
配置:controller和視圖解析器
4. 創建controller
3 .三種handlerMapping
1. BeanNameUrlHandlerMapping? (默認)
<!-- 按著controller的name來映射尋找controller,默認存在 -->?????????????
?? <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
2.SimpleUrlHandlerMapping
<!-- 使用簡單url來映射 -->
?? <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
????? <property name="mappings">
??????? <props>
?????????? <prop key="/hello1.do">myController</prop>
??????? </props>
????? </property>
?? </bean>
3.ControllerClassNameHandlerMapping
<!-- 控制類的類名控制器,訪問時類名首字母需要小寫 -->
?? <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
4.幾種控制器
ParameterizableViewController(參數控制器)
?
<bean name="/toIndex.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
????? <!-- 配置你所要跳轉到視圖的名稱 -->
????? <property name="viewName"value="index"></property>
</bean>
?
只支持post請求方式
表單控制器有簡單的驗證功能
如果提交失敗返回表單頁面,如果提交成功就跳轉到成功頁面
有收集表單數據的功能
日期類型轉換
5 springmvc基于注解的開發
5.1注解第一個例子
創建web項目
在springmvc的配置文件中指定注解驅動,配置掃描器
@controller:標識當前類是控制層的一個具體的實現
@requestMapping:放在方法上面用來指定某個方法的路徑,當它放在類上的時候相當于命名空間需要組合方法上的requestmapping來訪問。
5.2注解方式參數
1.在方法中可以自己隨意去定義方法的參數,如果方法的參數的名稱與傳入參數的name匹配就會自動接收,別且轉換我們所定義的數據類型。如果參數列表里定義了自定義的類springmvc會給我們把匹配的參數手機起來并且組裝成對象。
2. requestMapping里面的method的類型必須要與前臺form的類型一致
3. 重定向:
6. 文件上傳
引入jar包
配置視圖解析器
寫上傳邏輯
?
/**
?? ?* model層的處理使用map
?? ?* desc:
?? ?* author:任亮
?? ?* mail:renliangjava@163.com
?? ?* qq群:2636378537
?? ?* @throws Exception
?? ?*/
@RequestMapping(value="/personForUpload.do",method=RequestMethod.POST)
?? public String personForUpload(HttpServletRequest request,Person person, Map<String,Object> map) throws Exception{
????? //第一步轉化request
????? MultipartHttpServletRequest mr = (MultipartHttpServletRequest)request;
????? //獲得上傳的文件mr.getFile(String fileName),fileName是<input type="file" name="pic"><br>中pic
????? CommonsMultipartFile cf = (CommonsMultipartFile) mr.getFile("pic");
????? byte[] fb = cf.getBytes();
????? String fileName = "";
????? //設置時間戳格式
????? SimpleDateFormat af = new SimpleDateFormat("yyyyMMddhhmmssSSS");
????? //獲得時間戳的字符串
????? fileName = af.format(new Date());
????? //加三位隨機數
????? Random random = new Random();
????? for(int i = 0; i < 3; i++){
??????? fileName = fileName + random.nextInt(10);
????? }
????? String path =request.getSession().getServletContext().getRealPath("/");
????? OutputStream out = new FileOutputStream(path+"/img/"+fileName+".jpg");
????? out.write(fb);
????? out.flush();
????? out.close();
????? map.put("person", person);
????? return "success";
}
7. 攔截器
?
8. Ssm整合
參見代碼
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
????? xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
????? id="WebApp_ID" version="2.5">
?
?? <!-- springmvc中央的轉發器 -->
?? <servlet>
????? <servlet-name>springmvc</servlet-name>
????? <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
????? <init-param>
??????? <param-name>contextConfigLocation</param-name>
??????? <param-value>classpath:springmvc-servlet.xml</param-value>
????? </init-param>
?? </servlet>
?? <servlet-mapping>
????? <servlet-name>springmvc</servlet-name>
????? <url-pattern>*.do</url-pattern>
?? </servlet-mapping>
??
?? <listener>
????? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
?? </listener>
?? <context-param>
????? <param-name>contextConfigLocation</param-name>
????? <param-value>classpath:beans.xml</param-value>
?? </context-param>
</web-app>
?
?
?
<?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:mvc="http://www.springframework.org/schema/mvc"
?? xmlns:context="http://www.springframework.org/schema/context"
?? xmlns:aop="http://www.springframework.org/schema/aop"
?? xmlns:tx="http://www.springframework.org/schema/tx"
?? xsi:schemaLocation="http://www.springframework.org/schema/beans
???????????????? http://www.springframework.org/schema/beans/spring-beans.xsd
???????????????? http://www.springframework.org/schema/mvc
???????????????? http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
???????????????? http://www.springframework.org/schema/context
???????????????? http://www.springframework.org/schema/context/spring-context-3.0.xsd
???????????????? http://www.springframework.org/schema/aop
???????????????? http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
?? ????????????? http://www.springframework.org/schema/tx
???????????????? http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
????? <!-- 注解掃描器 -->
????? <context:component-scan base-package="cn.itcast"/>
??
????? <bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
??????? <property name="driverClassName"value="com.mysql.jdbc.Driver"></property>
??????? <property name="url"value="jdbc:mysql://127.0.0.1:3306/springmvc"></property>
??????? <property name="username"value="root"></property>
??????? <property name="password"value="root"></property>
????? </bean>
?????
????? <bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
??????? <property name="dataSource"ref="dataSource"></property>
??????? <property name="mappingDirectoryLocations">
?????????? <value>classpath:cn/itcast/hbm</value>
??????? </property>
??????? <property name="hibernateProperties">
?????????? <props>
????????????? <prop key="hibernate.Dialect">org.hibernate.dialect.MySQL5Dialect</prop>
????????????? <prop key="hibernate.show_sql">true</prop>
????????????? <prop key="hibernate.hbm2ddl">update</prop>
?????????? </props>
??????? </property>
????? </bean>
?????
????? <bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
??????? <property name="sessionFactory"ref="sessionFactory"></property>
????? </bean>
?????
????? <tx:advice id="txAdvice"transaction-manager="txManager">
??????? <tx:attributes>
?????????? <tx:method name="save*"propagation="REQUIRED"/>
?????????? <tx:method name="update*"propagation="REQUIRED"/>
?????????? <tx:method name="get*"propagation="NEVER" read-only="true"/>
??????? </tx:attributes>
????? </tx:advice>
?????
????? <aop:config>
??????? <aop:advisor advice-ref="txAdvice"pointcut="execution(* cn.itcast.service..*.*(..))"/>
????? </aop:config>
</beans>
?
總結
以上是生活随笔為你收集整理的04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数定律对保险经营有指导作用
- 下一篇: 01_MyBatis EHCache集成