`
王非123
  • 浏览: 24558 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于注解SpringMVC登陆

 
阅读更多
web.xml 配置:

<servlet>
	<servlet-name>dispatcher</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
	<description>加载/WEB-INF/spring-mvc/目录下的所有XML作为Spring MVC的配置文件</description>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring-mvc/*.xml</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>dispatcher</servlet-name>
	<url-pattern>*.htm</url-pattern>
</servlet-mapping>




这样,所有的.htm的请求,都会被DispatcherServlet处理;

初始化 DispatcherServlet 时,该框架在 web 应用程序WEB-INF 目录中寻找一个名为[servlet-名称]-servlet.xml的文件,并在那里定义相关的Beans,重写在全局中定义的任何Beans,像上面的web.xml中的代码,对应的是dispatcher-servlet.xml;当然也可以使用<init-param>元素,手动指定配置文件的路径;
dispatcher-servlet.xml 配置:
<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
			http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
			http://www.springframework.org/schema/context 
			http://www.springframework.org/schema/context/spring-context-3.0.xsd
			http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
			http://www.springframework.org/schema/mvc 
			http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
			http://www.springframework.org/schema/context 
			http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!--
        使Spring支持自动检测组件,如注解的Controller
    -->
    <context:component-scan base-package="com.minx.crm.web.controller"/>
   
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />
</beans>





第一个Controller:
package com.minx.crm.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index() {
        return "index";
    }
}

@Controller注解标识一个控制器,@RequestMapping注解标记一个访问的路径(/index.htm),return "index"标记返回视图(index.jsp);

注:如果@RequestMapping注解在类级别上,则表示一相对路径,在方法级别上,则标记访问的路径;
从@RequestMapping注解标记的访问路径中获取参数:
Spring MVC 支持RESTful风格的URL参数,如:
@Controller
public class IndexController {

    @RequestMapping("/index/{username}")
    public String index(@PathVariable("username") String username) {
        System.out.print(username);
        return "index";
    }
}

在@RequestMapping中定义访问页面的URL模版,使用{}传入页面参数,使用@PathVariable 获取传入参数,即可通过地址:http://localhost:8080/crm/index/tanqimin.htm 访问;

根据不同的Web请求方法,映射到不同的处理方法:
使用登陆页面作示例,定义两个方法分辨对使用GET请求和使用POST请求访问login.htm时的响应。可以使用处理GET请求的方法显示视图,使用POST请求的方法处理业务逻辑;
@Controller
public class LoginController {
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login() {
        return "login";
    }
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login2(HttpServletRequest request) {
            String username = request.getParameter("username").trim();
            System.out.println(username);
        return "login2";
    }
}

在视图页面,通过地址栏访问login.htm,是通过GET请求访问页面,因此,返回登陆表单视图login.jsp;当在登陆表单中使用POST请求提交数据时,则访问login2方法,处理登陆业务逻辑;

防止重复提交数据,可以使用重定向视图:
return "redirect:/login2"
可以传入方法的参数类型:

@RequestMapping(value = "login", method = RequestMethod.POST)
public String testParam(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
	String username = request.getParameter("username");
	System.out.println(username);
	return null;
}



可以传入HttpServletRequest、HttpServletResponse、HttpSession,值得注意的是,如果第一次访问页面,HttpSession没被创建,可能会出错;

其中,String username = request.getParameter("username");可以转换为传入的参数:
@RequestMapping(value = "login", method = RequestMethod.POST)
public String testParam(HttpServletRequest request, HttpServletResponse response, HttpSession session,@RequestParam("username") String username) {
	String username = request.getParameter("username");
	System.out.println(username);
	return null;
}
 


使用@RequestParam 注解获取GET请求或POST请求提交的参数;

获取Cookie的值:使用@CookieValue :
获取PrintWriter:
可以直接在Controller的方法中传入PrintWriter对象,就可以在方法中使用:
@RequestMapping(value = "login", method = RequestMethod.POST)
public String testParam(PrintWriter out, @RequestParam("username") String username) {
	out.println(username);
	return null;
}


获取表单中提交的值,并封装到POJO中,传入Controller的方法里:

POJO如下(User.java):
 public class User{
	private long id;
	private String username;
	private String password;

	…此处省略getter,setter...
}
 




通过表单提交,直接可以把表单值封装到User对象中:
@RequestMapping(value = "login", method = RequestMethod.POST)
public String testParam(PrintWriter out, User user) {
	out.println(user.getUsername());
	return null;
}
 



可以把对象,put 入获取的Map对象中,传到对应的视图:

@RequestMapping(value = "login", method = RequestMethod.POST)
public String testParam(User user, Map model) {
	model.put("user",user);
	return "view";
}
 



在返回的view.jsp中,就可以根据key来获取user的值(通过EL表达式,${user }即可);

Controller中方法的返回值:
void:多数用于使用PrintWriter输出响应数据;
String 类型:返回该String对应的View Name;
任意类型对象:
返回ModelAndView:
自定义视图(JstlView,ExcelView):
拦截器(Inteceptors):
public class MyInteceptor implements HandlerInterceptor {
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) 
		throws Exception {
		return false;
	}
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object o, ModelAndView mav) 
		throws Exception {
	}
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object o, Exception excptn) 
		throws Exception {
	}
}



拦截器需要实现HandleInterceptor接口,并实现其三个方法:

preHandle:拦截器的前端,执行控制器之前所要处理的方法,通常用于权限控制、日志,其中,Object o表示下一个拦截器;
postHandle:控制器的方法已经执行完毕,转换成视图之前的处理;
afterCompletion:视图已处理完后执行的方法,通常用于释放资源;
在MVC的配置文件中,配置拦截器与需要拦截的URL:
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/index.htm" />
		<bean class="com.minx.crm.web.interceptor.MyInterceptor" />
	</mvc:interceptor>
</mvc:interceptors>
 


国际化:

在MVC配置文件中,配置国际化属性文件:
<bean id="messageSource"
	class="org.springframework.context.support.ResourceBundleMessageSource"
	p:basename="message">
</bean>




那么,Spring就会在项目中搜索相关的国际化属性文件,如:message.properties、message_zh_CN.properties

在VIEW中,引入Spring标签:<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>,使用<spring:message code="key" />调用,即可;
如果一种语言,有多个语言文件,可以更改MVC配置文件为:
 <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
	<property name="basenames">
		<list>
			<value>message01</value>
			<value>message02</value>
			<value>message03</value>
		</list>
	</property>
</bean>

分享到:
评论

相关推荐

    springmvc登陆示例项目

    本项目“springmvc登陆示例项目”是针对初学者和开发者的一个实践教程,旨在帮助他们理解并掌握SpringMVC在处理用户登录场景中的应用。 该项目名为"goodDay",可能代表一个简单的日常登录系统,其核心功能是实现...

    springMVC简单登陆例子

    在这个"springMVC简单登陆例子"中,我们将深入探讨如何利用SpringMVC实现用户登录功能,并结合MySQL数据库进行数据存储。 首先,SpringMVC是Spring框架的一部分,它通过Model-View-Controller(MVC)设计模式来分离...

    可二次开发springmvc实现登陆

    Spring MVC 是一款强大的Java Web开发框架,由Spring公司推出,用于构建基于模型-视图-控制器(MVC)模式的Web应用程序。它提供了一个灵活的架构,帮助开发者将业务逻辑与用户界面分离,使得开发过程更加高效且易于...

    springmvc简单的登陆

    在本项目"springmvc简单的登陆"中,我们将探讨如何使用 Spring MVC 实现一个简单的登录功能。 **Spring MVC 架构** 1. **DispatcherServlet**:这是 Spring MVC 的核心,作为前端控制器,它负责接收 HTTP 请求,并...

    SpringMVC留言板_.zip

    SpringMVC留言板是一个基于Java的Web应用程序,使用了SpringMVC框架来实现用户交互和数据管理。这个实验项目旨在帮助开发者了解如何在实际环境中运用SpringMVC,掌握其核心概念和工作流程。以下是对该实验项目的详细...

    springMVC+mybatis实现登录和增删改查

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 **3. 增删改查操作** 在本项目中,增删改查(CRUD)是最基础的数据操作...

    最简单的,注册,登陆,注销的代码,通过springmvc+hibernate+jstl注解实现的

    在本项目中,SpringMVC和Hibernate都广泛使用了注解来简化配置和提高可读性。例如,SpringMVC的`@RequestMapping`用于映射URL到控制器方法,Hibernate的`@Entity`用于标记实体类,`@Id`用于标识主键等。 8. **文件...

    可二次开发springmvc实现登陆.rar

    标题:基于SpringMVC的可二次开发登录系统本系统采用流行的Java Web框架——SpringMVC,构建了一个可二次开发的登录模块。通过细致的模块化设计,确保了系统的高内聚、低耦合特性,为进一步的功能扩展提供了便利。...

    学生签到系统的开发,springmvc+mybatis。

    《基于SpringMVC和MyBatis的学生签到系统开发详解》 在信息技术高速发展的今天,学生签到系统作为教育管理中的重要组成部分,已经逐渐成为提升教学效率、优化管理流程的有效工具。本文将深入探讨如何利用SpringMVC...

    springmvc框架的用户登录注册的简单实现

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在本例中,"springmvc框架的用户登录注册的简单实现"提供了一个...

    myeclipse2013+springmvc3.1+hibernate4实例

    SpringMVC是Spring框架的一部分,用于构建基于模型-视图-控制器(MVC)架构的Web应用程序。Hibernate则是一个强大的ORM框架,简化了Java与数据库之间的交互。 【描述】"这里实现了登陆界面和操作数据库的功能,是...

    mybatis+spring+springmvc+easyui做的一个登陆,增删改的项目实例

    本项目实例是一个基于Java技术栈,融合了MyBatis、Spring、SpringMVC以及EasyUI框架的完整登录和数据管理应用。这个应用的核心目标是实现用户登录功能,并提供增删改查(CRUD)的数据操作界面,具体表现为左侧菜单栏...

    springMVC整合MyBatis+sql文件

    描述中提到的"springMVC+Mybatis,登陆,查询分页都有",意味着这个项目已经实现了基本的用户登录功能以及数据查询的分页展示。在登录功能中,通常会涉及到用户输入验证、凭证校验等环节,这可以通过SpringMVC的拦截...

    IntelliJ IDEA 2017建立简单springMVC(hua)

    SpringMVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架,通过提供注解来简化 Web 层的开发。IntelliJ IDEA 是一个商业化的 Java IDE,它支持各种框架的项目搭建和开发。 在 IntelliJ ...

    springmvc 模拟登陆

    在本项目中,"springmvc 模拟登陆"是通过 Spring MVC 实现的一个简单的登录功能,不涉及与数据库的交互,适合初学者学习和理解 Spring MVC 的基本工作原理。 首先,让我们详细了解一下 Spring MVC 的核心概念: 1....

    springmvc+mybatis+maven登陆、增删改查、分页实例-初学者必选(修改版)

    这是一个基于SpringMVC、MyBatis和Maven的Web应用实例,特别适合初学者学习使用。这个项目提供了完整的登录功能、数据操作(增删改查)以及分页展示的实现,帮助初学者快速掌握这些核心技术在实际开发中的应用。 1....

    spring两个简单登录案例(注解+配置+文档)

    在本压缩包中,我们有两个基于Spring框架的简单登录案例,涵盖了注解和配置两种不同的实现方式。Spring作为Java世界中的主流轻量级框架,它提供了丰富的功能来简化应用程序的开发,尤其是对于Web应用程序,Spring ...

    springmvc+mybatis+maven登陆、增删改查、分页实例-初学者必选(含数据库) zip文件

    这是一个基于SpringMVC、MyBatis和Maven的Web应用程序示例,专为初学者设计,旨在帮助他们理解和掌握这三大框架的集成与应用。这个项目涵盖了登录功能、基本的CRUD操作(创建、读取、更新、删除)以及分页处理。下面...

    spring MVC 简单登陆例子

    一个基于Spring MVC的Web项目通常包含以下关键组件: - **src/main/java**: 包含业务逻辑和控制器类。 - **src/main/webapp/WEB-INF**: 存放web.xml配置文件,定义Spring MVC的DispatcherServlet。 - **src/main...

    spring mvc 登录实例

    它基于Spring框架,提供了模型-视图-控制器(MVC)架构模式,简化了Web应用的开发流程。在这个"spring mvc 登录实例"中,我们将深入探讨如何使用Spring MVC实现一个简单的用户登录功能,这对于初学者来说是一个很好...

Global site tag (gtag.js) - Google Analytics