spring一站式框架(web层)

一.什么是springMVC
   Springmvc和Struts2都属于表现层的框架,它是Spring框架的一部分。


二.springmvc入门
   springmvc.xml配置
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">        
<!-- 开启注解扫描 -->
<context:component-scan base-package="com.lk.springmvc.controller"/>
<!-- 配置处理器映射器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
<!-- 配置处理器适配器 -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
<!-- 配置注解驱动,如果配置此标签可以不用配置处理器映射器和适配器 -->
<mvc:annotation-driven conversion-service="conversionService"/>
/**<!-- 转换器的配置用来转换日期格式 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
    <bean class="cn.itcast.springmvc.convert.DateConverter" />
</set>
</property>
</bean>
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return simpleDateFormat.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}**/
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

   web.xml的配置
<!-- 初始化spring 容器 -->
  <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 前端控制器 -->
  <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定springmvc配置文件的路径 如果不指定默认为:/WEB-INF/${servlet-name}-servlet.xml-->
  <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:springmvc.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>*.action</url-pattern>
  </servlet-mapping>
<servlet-mapping>//可以配置很多servlet-mapping
  <servlet-name>springmvc</servlet-name>
  <!-- /:拦截所以请求,不包括jsp。/*:拦截所有请求包括jsp,应该配置“/” -->
  <url-pattern>/</url-pattern>
  </servlet-mapping>
<!-- 解决post乱码问题(post提交时要进缓存区而缓存区的编码可能不是utf-8编码) -->
  <filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


java代码实现
*无形参的的写法
@Controller
public class LkController {
@RequestMapping("/LkList")
public ModelAndView LkList() throws Exception {
List<Lks> lkList = new ArrayList<>();
Lks a = new Lks();
a.setName("笔记本_3");
a.setPrice(6000);
a.setDetail("笔记本电脑!");
Lks a2 = new Lks();
a2.setName("手机");
a2.setPrice(5000);
a2.setDetail("tt手机!");
lkList.add(a1);
lkList.add(a2);
//创建modelandView对象
ModelAndView modelAndView = new ModelAndView();
//添加model
modelAndView.addObject("lkList", lkList);
//添加视图
modelAndView.setViewName("/WEB-INF/jsp/lkList.jsp");
//modelAndView.setViewName("lkList");
return modelAndView;
}


}
*默认形参(如果想获得Request对象只需要在Controller方法的形参中添加一个参数即可。Springmvc框架会自动把Request对象传递给方法。处理器形参中添加如下类型的  参数处理适配器会默认识别并进行赋值.如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替  代。不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据
  *HttpServletRequest
  *HttpServletResponse
  *HttpSession
  *Model/ModelMap)
@RequestMapping("/lkEdit")
public String lkEdit(HttpServletRequest request, Model model) {
//从Request中取id
String strId = request.getParameter("id");
Integer id = null;
//如果id有值则转换成int类型
if (strId != null && !"".equals(strId)) {
id = new Integer(strId);
} else {
//出错
return null;
}
Lks a = lkService.getlkById(id);
//创建ModelAndView
//ModelAndView modelAndView = new ModelAndView();
//向jsp传递数据
//modelAndView.addObject("bbbb", lks);
 model.addAttribute("bbbb", lks);
//设置跳转的jsp页面
//modelAndView.setViewName("editlk");
//return modelAndView;
return "editLk";
}
*绑定简单数据类型(绑定简单数据类型,当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。从Request取参数的方法可以进一步简化。
 如果让不一样的进行绑定需要)
@RequestMapping("/lkEdit")
public String lkEdit(Integer id, Model model) {
Lks a = lkService.getLkById(id);
//向jsp传递数据
model.addAttribute("lk", a);
//设置跳转的jsp页面
return "editLk";
}
*绑定形参名称不一致时简单数据类型(注意:如果请求参数中没有item_id将跑出异常:HTTP Status 500 - Required Integer parameter 'lk_id' is not present
  这里通过required=true限定item_id参数为必需传递,如果不传递则报400错误,可以使用defaultvalue设置默认值,即使   required=true也可以不传item_id参数值)
public String editLk(@RequestParam(value="lk_id",required=true) String id) {

}
*绑定对象形参(如果提交的参数很多,或者提交的表单中的内容很多的时候可以使用pojo接收数据。要求pojo对象中的属性名和表单中input的name属性一致。注意:提交 的表单中不要有日期类型的数据,否则会报400错误。如果想提交日期类型的数据需要用自定义参数绑定的内容在前面已配置。)
@RequestMapping("/updatelk")
public String updateItem(Lks lks) {
lkService.updateItem(lks);
return "success";
}


三.springmvc架构流程
1、用户发送请求至前端控制器DispatcherServlet
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NPC程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值