spring mvc入门
来源:互联网 发布:vue.js 实现网页下载 编辑:程序博客网 时间:2024/06/01 21:54
(一)处理流程
spring是现在很流行的web框架,其主要的处理流程如下图所示:
过程1:分发器根据url地址,来扫描指定的控制器包,来确定与该url相对应的控制器类。过程2:根据url地址,在控制器中找到对应的处理方法,过程1和2本质是一个过程。过程3:控制器根据依赖注入技术,扫描service包,获得业务处理service的实例,调用service来处理具体业务。过程4:service类根据需求,与数据库进行交互。过程5:数据库返回处理结果,返回数据等过程6:service类返回业务处理的结果过程7:控制器处理方法返回视图对应的jsp文件名称,并通过model携带参数,向用户展示处理结果过程8:将处理结果返回给用户,响应用户请求
以上就是一个完整的spring处理流程。
(二)文件结构
使用spring需要相应的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>
运行结构
登陆界面
登陆失败
登录成功
阅读全文
0 0
- 【spring】spring MVC入门
- 【Spring】Spring MVC入门
- Spring MVC 入门
- Spring MVC入门
- Spring MVC 入门
- spring mvc入门
- spring mvc入门
- Spring MVC 入门
- 入门spring MVC
- Spring MVC 入门
- Spring MVC 入门 @ MultiActionController
- spring mvc入门
- Spring MVC入门
- Spring MVC 入门
- Spring MVC 入门
- Spring MVC 入门
- Spring mvc 入门
- Spring MVC 入门
- C# 发送邮件到smtp服务器错误:以一种访问权限不允许的方式做了个访问套接字的尝试
- B/S架构和C/S架构(Web开发相关知识)
- iOS 11导航栏按钮不显示问题
- const与define的一点区别
- Laravel Redis和Session 存放在不同的数据库
- spring mvc入门
- 笔记:一键分享插件
- 【算法】找零钱-动态规划实现过程解析
- python __name__ = '__main__'的作用
- C# json数据流解析,可解决粘包、断包、坏包问题
- BZOJ 2243 浅谈树链剖分+线段树
- mycat全局表实战应用简析(下):多节点自增字段的处理
- Python实现排序算法
- CSS实现单行、多行文本溢出显示省略号(…)