spring基础学习-简单实例(三)
来源:互联网 发布:tile python 编辑:程序博客网 时间:2024/05/16 14:35
上两篇关于spring的博客对spring做了一个简单的介绍,并且简单搭建了一个spring web应用的底层框架,
本篇博客讲解一下用spring mvc搭建的前台框架,闲话少说,让我们继续spring学习之旅吧.
f.前台框架搭建.
spirng2.5新增了基于注解的mvc,而spring3.0还提供了rest风格的mvc,spring mvc已经变得更轻便,强大,易用.
首先需要配置一下web.xml文件,在web.xml文件中,我们需要配置spring mvc的相关信息,其实spring mvc像struts
拼装成一个命令对象,一起传给控制处理器,控制器调用spring容器中的业务bean完成业务,最后后返回结果试图.
除了需要在web.xml文件中配置spring mvc相关的信息,spring mvc还需要一个自己的配置文件,这个文件的名称首先和上面
web.xml文件中关于spring mvc相关的servlet name有一个契约,必须采用<Servlet-name>-servlet.xml,这个文件和web.xml文件
放在同一个目录下,即WEB-INF目录下.但是这个配置文件无需像applicationContxt.xml一样还需要通过添加web容器的上下文参数来加载,
我们还看到了一个特殊的bean org.springframework.web.servlet.view.InternalResourceViewResolver,这个bean的意思是
配置spring mvc视图解析器,将ModelAndView及字符串解析成具体的页面,在这里是通过使用InternalResourceViewResolver为视图添加前后缀的方式进行解析.
本篇博客讲解一下用spring mvc搭建的前台框架,闲话少说,让我们继续spring学习之旅吧.
f.前台框架搭建.
spirng2.5新增了基于注解的mvc,而spring3.0还提供了rest风格的mvc,spring mvc已经变得更轻便,强大,易用.
首先需要配置一下web.xml文件,在web.xml文件中,我们需要配置spring mvc的相关信息,其实spring mvc像struts
一样,也是通过一个servlet截获url请求,然后进行相关的处理,直接看代码.
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 引入spring配置文件的路径, classpath关键字是指在类路径下加载spring配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 负责启动spring容器的监听器,他将根据上面的contextConfigLoaction上下文参数获得spring配置文件的地址 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 配置spring mvc的主控servlet --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><!-- 配置spring mvc处理的url --><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.mvc</url-pattern></servlet-mapping></web-app>
从web.xml文件中我们可以看出请求后缀为.mvc的请求被spring mvc截获后,首先根据请求的url查找到目标的处理控制器,并将请求参数拼装成一个命令对象,一起传给控制处理器,控制器调用spring容器中的业务bean完成业务,最后后返回结果试图.
除了需要在web.xml文件中配置spring mvc相关的信息,spring mvc还需要一个自己的配置文件,这个文件的名称首先和上面
web.xml文件中关于spring mvc相关的servlet name有一个契约,必须采用<Servlet-name>-servlet.xml,这个文件和web.xml文件
放在同一个目录下,即WEB-INF目录下.但是这个配置文件无需像applicationContxt.xml一样还需要通过添加web容器的上下文参数来加载,
因为spring mvc的servlet会自动将<Servlet-name>-servlet.xml和spring其他的配置文件进行拼装,直接看代码.
<?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:context="http://www.springframework.org/schema/context"xmlns:jms="http://www.springframework.org/schema/jms" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"><!-- spring mvc拥有一个配置文件, 该配置文件的名称和web.xml中配置的主控servlet中的servlet-name有一个契约, 即采用<Servlet名>+-servlet.xml, 所以此spring mvc配置文件的名称是spring-mvc-servlet.xml --><!-- 扫描web包, 将标注spring注解的类自动转化为bean, 同时完成bean的注入 --><context:component-scan base-package="com.ilucky.spring.demo.web" /><!-- 配置spring mvc视图解析器,将ModelAndView及字符串解析成具体的页面 ,在这里通过使用InternalResourceViewResolver为视图添加前后缀的方式进行解析--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="viewClass" ><value>org.springframework.web.servlet.view.JstlView</value></property><property name="prefix" ><value>/jsp/</value></property><property name="suffix" ><value>.jsp</value></property></bean></beans>
从<servlet-name>-servlet.xml文件中我们除了看到扫包声明<context:component-scan base-package="com.ilucky.spring.demo.web"/>,我们还看到了一个特殊的bean org.springframework.web.servlet.view.InternalResourceViewResolver,这个bean的意思是
配置spring mvc视图解析器,将ModelAndView及字符串解析成具体的页面,在这里是通过使用InternalResourceViewResolver为视图添加前后缀的方式进行解析.
看完了两个配置文件,接着看我们的控制类,直接看代码.
package com.ilucky.spring.demo.web;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.ilucky.spring.demo.model.User;import com.ilucky.spring.demo.service.UserService;/** * @author IluckySi * @date 20140419 */@Controllerpublic class UserController {@Autowiredprivate UserService userSerivce;//注意: ModelAndView是spring-web-servlet包中的class, 并不是spring-web包中的class, 他们是两个类库.//负责处理/login.mvc的请求.@RequestMapping(value="/login.mvc") public ModelAndView login(HttpServletRequest request, String userName, String userPassword) {boolean isValidUser = userSerivce.getMactchCount(userName, userPassword);if(!isValidUser) {return new ModelAndView("Login", "error", "用户名或密码错误!");} else {User user = userSerivce.getUserByUserName(userName);user.setUserVisitIp(request.getRemoteAddr());user.setUserVisitTime(new Date());userSerivce.loginSuccess(user);request.getSession().setAttribute("user", user);return new ModelAndView("Main");}}}
在这个类中,我们看到了注解 @Controller,意思是将此类标注成为一个spring mvc的控制类,然后是 @RequestMapping,意思是处理相应的前台请求.最后看前台页面(涉及到简单的jstl标签),直接看代码.
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP 'Login.jsp' starting page</title> </head> <body> <c:if test="${!empty error}"> <font color="red"><c:out value="${error}"/></font> </c:if> <form action="<c:url value="/login.mvc"/>" method="post"> 用户名称:<input type="text" name="userName"> <br> 用户密码:<input type="password" name="userPassword"> <br> <input type="submit" vaue="登陆"> </form> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP 'Main.jsp' starting page</title> </head> <body> ${user.userName},欢迎您第${user.userVisitCount }次登陆本网站! </body></html>
通过这样三篇博客,我们就用spring的原生展现成spring mvc,spring的原生持久层,和spring的原生业务层spring jdbc成功开发了一个spring web应用.亲还不打开浏览器进行验证,等什么呢?
点击此处下载源码
0 0
- spring基础学习-简单实例(三)
- maven基础学习(三)-简单实例(运行)
- spring基础学习-简单实例(一)
- spring基础学习-简单实例(二)
- Spring(基础)学习文档三
- Spring MVC 三 基础学习
- Spring基础之简单实例演示
- spring 学习(1.3) 入门基础- AOP 实例
- Spring学习笔记---AOP的简单实例
- spring基础学习三(注解使用)
- [学习总结][基础篇]Spring(三)
- Spring基础学习三 : 依赖注入
- springMVC基础及实例(三)springMVC与spring集成
- spring基础----->实例化bean的三种方式
- Spring学习笔记——Spring MVC的简单实例
- 【Spring学习笔记一】-Spring配置和简单实例
- Spring学习之实例化bean的三种方式
- Spring 基础 实例
- 详解使用UIWebView获取所点位置图片URL教程
- 文法例题
- [BZOJ2763][JLOI2011][分层图最短路]飞行路线
- Mosquito使用SSL/TLS进行安全通信时的使用方法
- POJ 3071 Football
- spring基础学习-简单实例(三)
- Android源码分析之抽象工厂模式
- css3 3d效果算法分享
- flex读取外部XML文件方式
- 看来大家发顺丰金坷垃索科洛夫久爱时空林凤娇克拉斯
- Android Binder分析三:Natvie Service的获取和调用
- linux下制作U盘系统启动盘
- QTP工作原理
- 后缀树详解以及具体应用