您的位置:首页 > 编程语言 > Java开发

【SpringMvc】的入门程序和执行过程详解

2018-01-22 21:26 681 查看
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“;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: