配置SpringMVC

这一篇我们进行简单的基础的SpringMVC框架的搭建与初步认识,我以一名初学者的身份,一点一点进行Spring框架的搭建。

我介绍下我所使用的编程环境,个人见解,不喜勿喷,仅做参考。

首先,请确定您对jsp或其他网页页面有一点了解,对jstl有一点点了解,理解servlet中的request、response的含义和使用,做过jsp与servlet的直接对接小demo。

我在电脑上已经装好了eclipse-jee-kepler,我用的是eclipse,自己安装好了JDK7,我认为MyEclipse已经包含了太多插件,而且对于架构和配置做到了部分傻瓜化,而使使用者已经逐渐忘记了自己搭框架的快乐与痛苦,对框架使用也没有更深了解。

我在eclipese中搭建好了tomcat,并运行无误。在此基础上我们进行springMVC的搭建。如果有人对如何搭建tomcat不了解,可以先jinxingtomcat的学习,参考:http://jingyan.baidu.com/article/8065f87fcc0f182330249841.html。

创建一个Web项目,file-new-project-Dynamic Web project,设置自己的项目名称(如SpringMvcTest),最后记得勾选创建项目本身带有的web.xml。

搭建SpringMVC需要Spring、hibernate等的jar包,我在项目中使用的jar包可以阅读我的随笔进行下载,配置SpringMVC时出现Tomcat无法启动,SpringMVC的jar包。对于jar包的引入按道理说应该是用到哪些jar包就添加哪些jar包,但对于初学者来说,在不了解各个jar包作用的情况下,请按照我说的,将所有SpringMVC的jar包统统放进Web-INF下的lib文件夹中!!!因为即使你知道各个jar包的作用你也不一定知道该怎么取舍。下面我们开始搭建,是不是还有点小激动呢。。。

首先找到项目——WebContent——Web-INF下的web.xml文件,我们要对此文件进行配置。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7     <context-param>
 8         <param-name>contextConfigLocation</param-name>
 9         <param-value>/WEB-INF/springmvc-servlet.xml, classpath:applicationContext-*.xml</param-value>
10     </context-param>
11
12      <servlet>
13         <servlet-name>springmvc</servlet-name>
14         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
15         <load-on-startup>1</load-on-startup>
16     </servlet>
17     <servlet-mapping>
18         <servlet-name>springmvc</servlet-name>
19         <url-pattern>*.do</url-pattern>
20     </servlet-mapping>
21
22     <listener>
23         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
24     </listener>
25
26     <welcome-file-list>
27         <welcome-file>login.jsp</welcome-file>
28     </welcome-file-list>
29
30 </web-app>  

web.xml配置好后,我们要在同目录下,配置springmvc-servlet.xml。(对于xml文件可以右键单击来创建xmlFile)。

<?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:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  

    <!-- 【配置映射处理器】 -->
    <!-- SpringMVC自带的映射处理器均实现了Spring的Ordered接口,这意味着我们可以在应用系统中声明多个处理器映射 -->
    <!-- 并且可以设置它们的优先级,这主要体现在order属性上,其值越小,则对应的该映射处理器的优先级越高 -->
    <!-- 本例中,SimpleUrlHandlerMapping的order值比BeanNameUrlHandlerMapping的小 -->
    <!-- 这意味着DispatcherServlet在映射URL的时候,首先会咨询SimpleUrlHandlerMapping -->
    <!-- 只有在SimpleUrlHandlerMapping无法返回结果时,才咨询BeanNameUrlHandlerMapping -->
    <bean id="beanNameUrlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
        <property name="order" value="1"/>
    </bean>

    <!-- DispatcherServlet使用的默认处理器映射是BeanNameUrlHandlerMapping,它使用URL样式的名字 -->
    <bean name="/login.do" class="com.lxn.controller.Login"/>  

    <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="order" value="0"/>
        <property name="mappings">
            <props>
                <prop key="/login.do"  >login</prop>
            </props>
        </property>
    </bean>  

    <!-- 这里的id="login"对应的是上面中的<prop>里面的value(login)即当有请求的Action为login.do时,将执行id为value(login)的操作或此类 -->     

    <bean id="login" class="com.lxn.controller.Login" />

</beans>

这里稍微说一下,当tomcat运行时,项目运行过程中发出一系列的请求,而web.xml中我们定义了listener,当请求根据要求转到springmvc-servlet.xml时,我们会将请求进行分类也就是弄明白请求到底要去到哪个servlet中进行相应的操作,此时或者是由form来提交Action的请求,或者是由url来指定.do,如:(<a href="<%=request.getContextPath()%>/login.do">Press</a>  )。在springmvc-servlet.xml中,我们会根据请求*.do前面的id得到此请求要到哪个servlet类中去进行操作。

在上面的springmvc-servlet.xml中,我们使用了两种方式来进行Action与servlet的对接,并为他们设置了相应的优先级。一种是直接通过urlname的方法,一种是通过id来判别。上述代码中,order的数值越低,优先级越高。因此当我们检测到login.do请求时,我们优先使用simpleUrlMapping方式。获得*.do,由*.do得到相匹配的servlet的id,根据id得到class位置,从而进行相应的servlet操作。

接下来我们创建login.jsp与login.java以及一个Model User.java。

首先我们考虑login的相关页面,login是登陆界面,登录之后应显示成功或失败,我们设定成功后登录到一个显示页面,失败后显示失败页面并打印失败的原因。需要三个jsp页面,在WebContent下新建三个jsp,分别为login.jsp、manageview.jsp、error.jsp。

login.jsp!!!!!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
</head>
<body>
<center>
<h1>登录</h1>
<br/><br/>
<form method="post" Action="login.do">
<table>
<tr/>
<td align="center">用户名</td><td><input type="text" name="username"></td>
</tr>
<tr>
<td align="center">密码</td><td><input type="password" name="password"></td>
</tr>

</table>
<input type="submit" value="登录">

</form>

</center>
</body>
</html>

manageview.jsp!!!!!!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>操作控制界面</title>
</head>
<body>
<center>
<c:set value="${loginperson}" var=" loginperson"></c:set>

<h1>登录成功</h1>
<br/><br/>
<table border="1" cellpadding="5">
<tr>
<td align="center">登录者信息</td><td><c:out value="${loginperson.information}"></c:out></td>
</tr>
<tr>
<td align="center">登录者用户名</td><td><c:out value="${loginperson.username}"></c:out></td>
</tr>
<tr>
<td align="center">登录者密码</td><td><c:out value="${loginperson.password}"></c:out></td>
</tr>
</table>
</center>
</body>
</html>

error.jsp!!!!!

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>出错了</title>
</head>
<body>
<center>
<h1>出错了</h1>
<c:set  value="${error_reason }" var="error"></c:set>
<h3>错误原因为:<c:out value="${error}"/></h3>
</center>

</body>
</html>

OK!三个页面建立成功。(当然里面有一些细节包含着我在servlet中的以部分操作,比如manageview中,为什么woyongjstl标签得到了loginperson这个对象,并展示了他的信息,这个在后面的servlet中会讲到)。

下面,我们在src中建一个包,名为com.lxn.model,然后在这个包中建立User.class。

package com.lxn.model;  

public class User {
    private String username;
    private String password;  private String information;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    } public String getInformation() {
        return information;
    }
    public void setInformation(String information) {
        this.information = information;
    }
}  

在src下,建立包,名为com.lxn.controller,并建立Login.java。继承 AbstractController

package com.lxn.controller;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import com.lxn.model.User;

/**
 * @author   :lin xiangnan
 * @date      :2014年8月19日 上午11:46:42
 * @function:
 */

public class Login extends AbstractController {

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        // TODO Auto-generated method stub
        HttpSession session=request.getSession();
        User loginperson=new User();
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        loginperson.setUsername(username);
        loginperson.setPassword(password);
        session.setAttribute("loginperson", loginperson);
        System.out.println("用户名为"+loginperson.getUsername());
        System.out.println("密码为"+loginperson.getPassword());
        if(loginperson.getUsername().equals("1111111")&&loginperson.getPassword().equals("1111111")){

            loginperson.setInformation("登录成功");
            return new ModelAndView("manageview","loginperson",loginperson);
        }

        String error_reason="登录用户名密码错误";
        return new ModelAndView("error","error_reason",error_reason);
    }

}

在此servlet的操作中,我们接收到request得到的form提交的值,对其进行检验与登录,当用户名与密码均为1111111时,我们判定此用户可以登录,并将他的相关属性保存在user中,将此user对象传递到页面,进行输出。如果用户名密码错误,我们返回一个error页面,从而得到error的相关信息输出到页面。

运行login.jsp,右键run on server,伟大的时刻即将来临,期待你们的实现,有问题请留言或评论。

配置SpringMVC

时间: 2024-11-09 00:03:38

配置SpringMVC的相关文章

第一节(配置springmvc环境)学习尚硅谷-springmvc视频教程

之前,一直从事C#开发.后来,公司调整后领导决定使用java开发,因此需要收集相关学习资料.该视频教程比较入门,也适合自己,于是边看边写的同时再总结一下便于自己牢记,遇到分歧不对之处望指正. 开发环境:win8系统.IntelliJ IDEA 2016.1.3. 1.创建maven项目目的是便于jar包更新.维护,IntelliJ非常方便.智能,会自动创建好项目结构,便于团队开发.创建好项目后,需要导入springmvc相关开发jar文件,通过maven管理jar包文件,只需在pom.xml文件

myeclipse配置springmvc+hibernate+mysql+tomcat 基于maven

环境: 1.myeclipse 2014 下载+破解..  http://my-eclipse.cn/ 2.hibernate 4.2.5.Final 3.mysql 好像是最新的 4.tomcat v8 5.maven 是myeclipse内置的.. new 一个webapp的maven的项目 先添加依赖项到pom.xml <properties> <springframework>4.0.5.RELEASE</springframework> <servlet

web.xml配置SpringMVC时导致访问的页面资源不存在,跳转页面时出现404

web.xml配置文件 ,配置SpringMVC: <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 设置配置文件的名称 和路径 --> <init-param> <param-name>con

ssm框架整合入门系列——配置SpringMVC dispatcherServlet-servlet.xml

配置SpringMVC dispatcherServlet-servlet.xml 在ssm-crud项目中 SpringMVC的配置主要是在dispatcherServlet-servlet.xml文件 在这之前,先修改beans的头信息,否则按alt+/ 快捷键没有提示,并且添加context:component-scan还报错:context:component-scan is not bound,后来找到的解决方法:context:component-scan is not bound.

配置SpringMVC返回JSON遇到的坑

坑一:官方网站下载地址不明朗,最后找了几个下载地址:http://wiki.fasterxml.com/JacksonDownload Jackson2.5下载地址:jackson2.5.0.jar 坑二:配置文件的配置信息跟jackson的版本有关. 版本一: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 版本二:org.springframework.http.converter.json

利用WebApplicationInitializer配置SpringMVC取代web.xml

对于Spring MVC的DispatcherServlet配置方式,传统的是基于XML方式的,也就是官方说明的XML-based,如下: <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <

[转]终于找到全annotation配置springMVC的方法了(事务不失效)

原文:http://icanfly.iteye.com/blog/778401 icanfly 写道 如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将service bean配置到xml文件中才行 这个问题是由于问答上有解决方案 引用 这个问题很经典了 在主容器中(applicationContext.xml),将Controller的注解排除掉 <context:component-scan base-package="com"> &

全注解方式配置SpringMVC

1.在J2EE三层的注解: 表现层:@Controller 业务层: @Service 持久层: @Repository 其他: @Component 注解起效需要几方: 1.需要一个注解 2.直接贴在什么地方 3.第三的扫描程序. 步骤: 1.开启注解扫描 <context:component-scan base-package="com._520it.springmvc.hello"/>  扫描哪个地方,这个是扫描一个包(如果扫描全部怎么配) 2.在对应的类上贴对应的注

annotation配置springMVC的方法了事务不起作用

Spring MVC 和spring context 父子容器关系http://www.121ask.com/thread-5471-1.html 父上下文容器中保存数据源.服务层.DAO层.事务的Bean. 子上下文容器中保存Mvc相关的Action的Bean. 事务控制在服务层. 由于父上下文容器不能访问子上下文容器中内容,事务的Bean在父上下文容器中,无法访问子上下文容器中内容,就无法对子上下文容器中Action进行AOP(事务). 当然,做为“传统型”方案,也没有必要这要做. 这个问题