spring mvc入门

来源:互联网 发布:vue.js 实现网页下载 编辑:程序博客网 时间:2024/06/01 21:54

(一)处理流程

  spring是现在很流行的web框架,其主要的处理流程如下图所示:
spring

过程1:分发器根据url地址,来扫描指定的控制器包,来确定与该url相对应的控制器类。过程2:根据url地址,在控制器中找到对应的处理方法,过程1和2本质是一个过程。过程3:控制器根据依赖注入技术,扫描service包,获得业务处理service的实例,调用service来处理具体业务。过程4:service类根据需求,与数据库进行交互。过程5:数据库返回处理结果,返回数据等过程6:service类返回业务处理的结果过程7:控制器处理方法返回视图对应的jsp文件名称,并通过model携带参数,向用户展示处理结果过程8:将处理结果返回给用户,响应用户请求

以上就是一个完整的spring处理流程。

(二)文件结构

  使用spring需要相应的jar包,具体下载地址点击这里,需要用的到jar包如下图所示:
jar

使用spring还需要配置两个很重要的文件,分别是web.xml和[servlet-name]-servlet.xml文件。

1.web.xml文件

  用于注册分发类,当然还有很多其他的功能,比如说过滤filter等。下面以本人写的一个小demo的web.xml为例:

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"    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_3_0.xsd" >    <servlet>        <servlet-name>login</servlet-name>        <servlet-class>        org.springframework.web.servlet.DispatcherServlet        </servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>login</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

上面代码便是注册了一个名为login的servlet,用来监听所有请求,并执行分法请求操作。

2.[servlet-name]-servlet.xml文件

  这个文件是spring的核心配置文件,用来配置controller,service,bean等一系列对象。文件名中的servlet-name是指在web.xml中注册的分发器servlet类的名字,例如上面在web.xml注册的分发器名为login,那么它的配置文件就应该是login-servlet.xml。

  下面以本人写的小demo来讲解该文件的构造。

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       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.3.xsd       http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-4.3.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/spring-mvc-4.3,xsd">    <context:component-scan base-package="controller" />    <context:component-scan base-package="service"/>    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/jsps/" />        <property name="suffix" value=".jsp"/>    </bean></beans>
<context:component-scan/>标签用于指定spring的扫描路径。因为spring为了简化开发过程,简化配置过程,用了很多基于注解的方法。当需要某个文件时,spring会自动根据扫面文件的路径去扫描特定名称的文件。例如:第一个<context:component-scan/>标签是用来指定所有controller类所在包的路径,spring就会扫描该文件夹中,所有带有@Controller标签的类,并匹配名字来定位到相应的controller类。第二个<context:component-scan/>标签用于指定所有service类所在包的路径,当需要实例化某个service类时,spring就会在该文件夹中扫描带有@Service标签的类,并根据名字定位到特定的类。id为viewResolver的bean标签用于指定jsp文件所在的路径。这个配置主要是为了简化匹配jsp的操作。controller类处理完请求之后会返回一个字符串,用来指定jsp文件的名字。该bean中name为prefix的property用来指定jsp文件的具体路径,name为suffix的property用来指定文件的后缀名,这样返回的字符串就会映射到特定文件夹中的特定jsp文件。这个文件中还可以配置各种各样的bean,具体请参考相应的文档和手册。

3.一个登陆验证的demo

  实现简单的登陆验证。

文件结构

文件结构

视图代码:

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>    <form name="login_form" action="verficate" method="post">        username:<input type="text" name="user" style="width:175px;"><br/>        password:<input type="password" name="pwd" style="width:175px;"><br/>        <input type="submit" name="signin" value="登陆">    </form></body></html>

success.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>    用户:<%=request.getAttribute("user") %> 登陆成功!</body></html>

fail.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>Insert title here</title></head><body>    登陆失败!    点击<a href="/login/signin">这里</a>重新登陆</body></html>

后台代码:

User.java

package model;public class User {    private String userName;                                //用户名    private String passWord;                                //密码    public User(){    }    public User(String userName, String passWord){        this.userName = userName;        this.passWord = passWord;    }    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;    }}

LoginController.java:

package controller;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import service.LoginService;import service.LoginServiceImpl;@Controllerpublic class LoginController {    @Autowired    public LoginService service;    @RequestMapping(value = "/verficate")             //注解匹配    public String vertification(HttpServletRequest request, Model model){        String user = request.getParameter("user");   //得到传来的用户名        String pwd = request.getParameter("pwd");     //得到传来的密码        boolean res = service.isUserExit(user, pwd);  //判断用户是否存在,且密码是否正确        if(res){            model.addAttribute("user", user);            return "success";                         //返回登陆成功.jsp        }        else{            return "fail";                            //返回登陆失败.jsp        }    }    @RequestMapping(value = "/signin")                //登陆    public String signIn(){        return "login";    }}

LoginService.java:

package service;import java.util.List;import model.User;public interface LoginService {    //接口类    List<User> getAllUser();                          //获取所有用户信息    boolean isUserExit(String userName, String passWord);}

LoginServiceImpl.java:

package service;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Service;import model.User;@Servicepublic class LoginServiceImpl implements LoginService{    private List<User> allUsers;    public LoginServiceImpl(){        //初始化添加用户信息        allUsers = new ArrayList<User>();        allUsers.add(new User("liuwei", "123"));        allUsers.add(new User("zhangbin", "456"));        allUsers.add(new User("fuguo", "789"));    }    @Override    public List<User> getAllUser() {        // TODO Auto-generated method stub        return this.allUsers;    }    @Override    public boolean isUserExit(String userName, String passWord) {        // TODO Auto-generated method stub        //判断用户是否存在        for(int i = 0; i < allUsers.size(); i++){            if(allUsers.get(i).getUserName().equals(userName) && allUsers.get(i).getPassWord().equals(passWord))                return true;        }        return false;    }}

配置文件:

web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"    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_3_0.xsd" >    <servlet>        <servlet-name>login</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>login</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

login-servlet.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       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.3.xsd       http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context-4.3.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/spring-mvc-4.3,xsd">    <context:component-scan base-package="controller" />    <context:component-scan base-package="service"/>    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/jsps/" />        <property name="suffix" value=".jsp"/>    </bean></beans>

运行结构

登陆界面
登陆

登陆失败
失败

登录成功
这里写图片描述

原创粉丝点击