springmvc 笔记

来源:互联网 发布:接机软件哪个好 编辑:程序博客网 时间:2024/04/29 03:41

Spring-mvc          QQ:495181456

1. Spring-mvc介绍

1.1市面上流行的框架

Ø Struts2(比较多)

Ø Springmvc(比较多而且属于上升的趋势)

Ø Struts1(即将被淘汰)

Ø 其他

1.2 spring-mvc结构

1.  DispatcherServlet:中央控制器,把请求给转发到具体的控制类

2. Controller:具体处理请求的控制器

3. handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略

4. ModelAndView:服务层返回的数据和视图层的封装类

5. ViewResolver  & View:视图解析器,解析具体的视图

6. Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作

红色的是需要自己创建,黑色的需要配置。

1.3 mvc模式

          Request                        response

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.4spring-mvc流程

 

 

2.spring-mvc的第一个例子

1. 创建一个web工程

2. 导入依赖包

 

3.创建springmvc的配置文件

Ø 配置中央控制器

 

创建springmvc的核心配置文件

文件的命名规则:中央控制器(servlet的名称)的名称+-servlet.xml

默认位置:WEB-INF

配置:controller和视图解析器

 

4. 创建controller

 

3 .三种handlerMapping

1. BeanNameUrlHandlerMapping  (默认)

<!-- 按着controllername来映射寻找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.几种控制器

1. ParameterizableViewController(参数控制器)

 

<bean name="/toIndex.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<!-- 配置你所要跳转到视图的名称 -->

<property name="viewName" value="index"></property>

</bean>

2.  AbstractCommandController(命令控制器)

 

 

 

3.  FormController(表单控制器)

1. 只支持post请求方式

2. 表单控制器有简单的验证功能

3. 如果提交失败返回表单页面,如果提交成功就跳转到成功页面

4. 有收集表单数据的功能

 

 

5. 日期类型转换

 

5 springmvc基于注解的开发

5.1注解第一个例子

1. 创建web项目

2. 在springmvc的配置文件中指定注解驱动,配置扫描器

 

3. @controller:标识当前类是控制层的一个具体的实现

4. @requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

5.2注解方式参数

1.在方法中可以自己随意去定义方法的参数,如果方法的参数的名称与传入参数的name匹配就会自动接收,别且转换我们所定义的数据类型。如果参数列表里定义了自定义的类springmvc会给我们把匹配的参数手机起来并且组装成对象。

2. requestMapping里面的method的类型必须要与前台form的类型一致

3. 重定向:

 

6. 文件上传

1. 引入jar

 

2. 配置视图解析器

 

3. 写上传逻辑

 

/**

 * 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/javaee http://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>

 

0 0