zoukankan      html  css  js  c++  java
  • spring mvc简单例子

    本篇博客讲解一下用spring mvc搭建的前台框架,闲话少说,让我们继续spring学习之旅吧.

    http://blog.csdn.net/sidongxue2/article/details/24305639
    f.前台框架搭建.
      spirng2.5新增了基于注解的mvc,而spring3.0还提供了rest风格的mvc,spring mvc已经变得更轻便,强大,易用.
      首先需要配置一下web.xml文件,在web.xml文件中,我们需要配置spring mvc的相关信息,其实spring mvc像struts

      一样,也是通过一个servlet截获url请求,然后进行相关的处理,直接看代码.

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
    6.   
    7.     <!-- 引入spring配置文件的路径, classpath关键字是指在类路径下加载spring配置文件 -->  
    8.     <context-param>  
    9.         <param-name>contextConfigLocation</param-name>  
    10.         <param-value>classpath:applicationContext.xml</param-value>  
    11.     </context-param>  
    12.   
    13.     <!-- 负责启动spring容器的监听器,他将根据上面的contextConfigLoaction上下文参数获得spring配置文件的地址 -->  
    14.     <listener>  
    15.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    16.     </listener>  
    17.   
    18.     <!-- 配置spring mvc的主控servlet -->  
    19.     <servlet>  
    20.         <servlet-name>springmvc</servlet-name>  
    21.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    22.     </servlet>  
    23.   
    24.     <!-- 配置spring mvc处理的url -->  
    25.     <servlet-mapping>  
    26.         <servlet-name>springmvc</servlet-name>  
    27.         <url-pattern>*.mvc</url-pattern>  
    28.     </servlet-mapping>  
    29. </web-app>  
    30. </span>  
     

      从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其他的配置文件进行拼装,直接看代码.

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-size:12px;"><?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
    4.     xmlns:jms="http://www.springframework.org/schema/jms" xmlns:tx="http://www.springframework.org/schema/tx"  
    5.     xmlns:aop="http://www.springframework.org/schema/aop"  
    6.     xsi:schemaLocation="  
    7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    8.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    9.     http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsd  
    10.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    11.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
    12.   
    13.     <!-- spring mvc拥有一个配置文件, 该配置文件的名称和web.xml中配置的主控servlet中的servlet-name有一个契约,   
    14.         即采用<Servlet>+-servlet.xml, 所以此spring mvc配置文件的名称是spring-mvc-servlet.xml -->  
    15.     <!-- 扫描web包, 将标注spring注解的类自动转化为bean, 同时完成bean的注入 -->  
    16.     <context:component-scan base-package="com.ilucky.spring.demo.web" />  
    17.   
    18.     <!-- 配置spring mvc视图解析器,将ModelAndView及字符串解析成具体的页面 ,  
    19.     在这里通过使用InternalResourceViewResolver为视图添加前后缀的方式进行解析-->  
    20.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    21.         <property name="viewClass" >  
    22.             <value>org.springframework.web.servlet.view.JstlView</value>  
    23.         </property>  
    24.         <property name="prefix" >  
    25.             <value>/jsp/</value>  
    26.         </property>  
    27.         <property name="suffix" >  
    28.             <value>.jsp</value>  
    29.         </property>  
    30.     </bean>  
    31. </beans>  
    32.   
    33. </span>  

      从<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为视图添加前后缀的方式进行解析.

      看完了两个配置文件,接着看我们的控制类,直接看代码.

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-size:12px;">package com.ilucky.spring.demo.web;  
    2.   
    3. import java.util.Date;  
    4.   
    5. import javax.servlet.http.HttpServletRequest;  
    6.   
    7. import org.springframework.beans.factory.annotation.Autowired;  
    8. import org.springframework.stereotype.Controller;  
    9. import org.springframework.web.bind.annotation.RequestMapping;  
    10. import org.springframework.web.servlet.ModelAndView;  
    11.   
    12. import com.ilucky.spring.demo.model.User;  
    13. import com.ilucky.spring.demo.service.UserService;  
    14.   
    15. /** 
    16.  * @author IluckySi 
    17.  * @date 20140419 
    18.  */  
    19. @Controller  
    20. public class UserController {  
    21.   
    22.         @Autowired  
    23.         private UserService userSerivce;  
    24.           
    25.         //注意: ModelAndView是spring-web-servlet包中的class, 并不是spring-web包中的class, 他们是两个类库.  
    26.         //负责处理/login.mvc的请求.  
    27.         @RequestMapping(value="/login.mvc")   
    28.         public ModelAndView login(HttpServletRequest request, String userName, String userPassword) {  
    29.             boolean isValidUser = userSerivce.getMactchCount(userName, userPassword);  
    30.             if(!isValidUser) {  
    31.                 return new ModelAndView("Login""error""用户名或密码错误!");  
    32.             } else {  
    33.                 User user = userSerivce.getUserByUserName(userName);  
    34.                 user.setUserVisitIp(request.getRemoteAddr());  
    35.                 user.setUserVisitTime(new Date());  
    36.                 userSerivce.loginSuccess(user);  
    37.                 request.getSession().setAttribute("user", user);  
    38.                 return new ModelAndView("Main");  
    39.             }  
    40.         }  
    41. }  
    42. </span>  

      在这个类中,我们看到了注解 @Controller,意思是将此类标注成为一个spring mvc的控制类,然后是 @RequestMapping,意思是处理相应的前台请求.

      最后看前台页面(涉及到简单的jstl标签),直接看代码.

    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-size:12px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    4. <html>  
    5.   <head>  
    6.     <title>My JSP 'Login.jsp' starting page</title>  
    7.   </head>  
    8.   <body>  
    9.     <c:if test="${!empty error}">  
    10.         <font color="red"><c:out value="${error}"/></font>  
    11.     </c:if>  
    12.     <form action="<c:url value="/login.mvc"/>"  method="post">  
    13.         用户名称:<input type="text" name="userName">  
    14.         <br>  
    15.         用户密码:<input type="password" name="userPassword">  
    16.         <br>  
    17.         <input type="submit" vaue="登陆">  
    18.     </form>  
    19.   </body>  
    20. </html>  
    21. </span>  
    [html] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. <span style="font-size:12px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    4. <html>  
    5.   <head>  
    6.     <title>My JSP 'Main.jsp' starting page</title>  
    7.   </head>  
    8.   <body>  
    9.      ${user.userName},欢迎您第${user.userVisitCount }次登陆本网站!  
    10.   </body>  
    11. </html>  
    12. </span>  

    通过这样三篇博客,我们就用spring的原生展现成spring mvc,spring的原生持久层,和spring的原生业务层spring jdbc成功开发了一个spring web应用.

    亲还不打开浏览器进行验证,等什么呢?

     

     

  • 相关阅读:
    20160227.CCPP体系详解(0037天)
    MinerUtil.java 爬虫工具类
    MinerUrl.java 解析页面后存储URL类
    MinerThreadPool.java 线程池
    MinerStoreThread.java 存储线程
    MinerQueue.java 访问队列
    MinerMonitorThread.java 监控线程
    MinerHtmlThread.java 爬取页面线程
    上班跟打DotA感觉差不多?姑娘你没事儿吧
    7月3日云栖精选夜读:强大的PyTorch:10分钟让你了解深度学习领域新流行的框架
  • 原文地址:https://www.cnblogs.com/cheng07045406/p/3680748.html
Copyright © 2011-2022 走看看