1.Springmvc是什么?
Springmvc是一个web层mvc框架,类似struts2.
2.Springmvc入门程序
2.1创建一个maven工程
2.2配置web.xml
2.3配置springmvc.xml
2.4自定义Controller
2.5定义视图页面
2.6根据代码分析springmvc执行流程
2.7适配器源码
3.中文乱码解决
-3.1Get请求乱码
- 3.2Post乱码
Spring编码过滤器:在web.xml配置
<filter>
<filter-name>characterEncoding</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>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4.注解开发
- 4.1创建一个web工程,并导入jar,配置web.xml
<!-- Spring编码过滤器 -->
<filter>
<filter-name>characterEncoding</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>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置前端控制器DispatcherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--
默认加载方式:默认加载文件必须规范
文件命名:servlet-name-servlet.xml======springmvc-servlet.xml
路径规范:必须在WEB-INF目录下面
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- 4.2配置springmvc.xml
<context:component-scan base-package="com.springmvc.assess" />
<mvc:annotation-driven />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
- 4.3测试Controller,在浏览器中输入http://localhost:8080/springmvcDemo/toLogin.do
@Controller
public class LoginController {
@RequestMapping("/toLogin")
public String toLogin(){
return "login";
}
}
5.封装参数
基本类型,int,String等等基本类型、Pojo类型、包装类型。Springmvc默认支持类型:HttpSession,HttpRequstServlet,Model等等。Springmvc参数封装:基于方法进行封装。
- 5.1封装int类型参数
页面传递参数都是字符串。
接受参数方法
- 5.2接受字符串类型
接受参数方法
- 5.3接受数组
checkbox复选框,Value必须有值。
接受参数方法
5.4接受Pojo
注意:input框中的name的名称需要和pojo中的属性保持一致
5.5接受包装类型参数
public class userCustom{
private user user;
private List<User> userList;
private Map<K,V> maps;
private items items;
......
省略getXxx()和setXxx()
}
接受参数方法
- 5.6接受集合类型参数
接受list集合
接受参数方法
- 5.7接受map
接受参数方法
6.springmvc和struts2区别
实现机制:
Struts2是基于过滤器实现的;Springmvc基于servlet实现,Servlet比过滤器快。
运行速度:
Struts2是多列,请求来了以后,struts2创建多少个对象:ActionContext,valuestack,UserAction,ActionSuport,ModelDriven,UserAction里面属性:User对象,userlist集合等;Springmvc是单列。
参数封装来分析:
Struts基于属性进行封装;Springmvc基于方法封装。
7.页面回显
//查询所有
@RequestMapping("list")
public String list(Model model){
//model 相当于application域对象
List<User> userList = new ArrayList<User>();
User user1 = new User();
user1.setId(1);
user1.setSex("男");
user1.setUsername("张山峰");
user1.setAddress("武当山");
user1.setBirthday(new Date());
User user2 = new User();
user2.setId(2);
user2.setSex("男");
user2.setUsername("张无忌");
user2.setAddress("武当山");
user2.setBirthday(new Date());
userList.add(user1);
userList.add(user2);
model.addAttribute("userList", userList);
return "list";
}
页面获取:
8.URL模版映射
- 8.1url模版映射过程
- Restfull风格设计
Web.xml拦截方式:在rest目录下所有请求都被拦截,servlet可以拦截目录。
{}:匹配接受页面Url路径参数
@Pathariable:{}里面参数注入后面参数里面
9.转发和重定向
9.1 转发forward
本类进行转发:本类方法与方法之间进行forward。
方式一:return ”forward:list.do“;
方式二:return ”forward:/user/list.do“;
注意:user根路径前面必须有/.跨类进行转发,转发方式:return ”forward:/items/list.do“;
9.2重定向redirect
重定向方式:return ”redirect:list.do“;