您的位置:首页 > 编程语言 > Java开发

springMVC实现简单登录

2015-09-23 21:46 549 查看
一,导入spring的核心包与MVC包

spring.jar,commons-logging.jar,spring-webmvc.jar

二,在web.xml中,配置Servlet

<servlet>

<servlet-name>springMVC</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>这个属性是DispatcherServlet的父类FrameworkServlet中的,String类型

<param-value>classpath:spring-schema.xml</param-value> 指定spring的配置文件所在路径

</init-param>

</servlet>



<servlet-mapping>

<servlet-name>springMVC</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

三,创建spring的配置文件,我给他取名叫:spring-schema.xml

四,编写ACTION,这个ACTION要继承springmvc中的一个叫做AbstractController抽象类,或者实现Controller接口,选择一个你所需要的方法,重写即可。

这里,我方便测试,我写了三个JSP页面,

1,一个index.jsp,只有一个连接,通过toLogin.do,跳转到login.jsp(对应ACTION是ToLoginAction implements Comtroller)

2,login.jsp用的是submit提交(对应LoginAction extends SimpleFormController),SimpleFormController 继承于AbstractFormController ,AbstractFormController继承于BaseCommandController,BaseCommandController继承于AbstractController。

3,welcome.jsp登录成功的时候,返回到这个页面,提示登录成功,并显示用户名。

五,写完两个ACTION

1,跳转到登录页面的处理

package action;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

public class ToLoginAction implements Controller {

public ModelAndView handleRequest(HttpServletRequest request,

HttpServletResponse response) throws Exception {

return new ModelAndView("login");

}

}

2,处理登录的验证

package action;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;

import org.springframework.validation.BindException;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;

import entity.User;

public class LoginAction extends SimpleFormController{

@Override

protected ModelAndView onSubmit(

HttpServletRequest request,

HttpServletResponse response,

Object command, //这个参数很关键,自动封装来自表单提交的数据,变成实体对象,下面有介绍

BindException errors)

throws Exception {

User user=(User)command;

ModelMap modelmap=new ModelMap(); //ModelMap extends LinkedHashMap 是一个能记录插入顺序的HashMap

if(user.getName().equals("zhangsan")&&user.getPassword().equals("1234")){

modelmap.put("user", user); //modelmap是用来绑定要在JSP显示的数据

return new ModelAndView("welcome",modelmap); //welcome是一个响应视图名字,返回到spring配置文件的时候,根据这个跳转到相应的JSP页面

}

modelmap.put("error", "用户名或密码错误"); //如果不符合zhangsan 1234 那么则绑定一个错误提示信息,

return new ModelAndView("login",modelmap); //如果不符合zhangsan 1234 返回到login.jsp(通过spring容器)

}

}

3,USER实体类

package entity;

public class User {

private String name;//这里的名字必须与表单中的name 一样 <input type="text" name="name">

private String password; //这里的也是 <input type="password" name="password">

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

六,配置好spring-schema.xml

1 ,将ACTION注入spring容器

<bean id="toLogin" class="action.ToLoginAction" scope="prototype">

</bean>

<bean id="login" class="action.LoginAction" scope="prototype">

<property name="commandClass" value="entity.User">

//commandClass是BaseCommandController的一个属性,他将表单提交的数据自动封装成实体对象,这也是为什么上面表单名字和实体的属性名字要一样了

</property>

</bean>

2 ,将请求注入到spring容器

<bean id="urlMapping"

class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">//只要是一个HandlerMapping组建即可,我选择简单的

<property name="mappings"> //mappings是该类或者他父类的一个Properties属性,key=请求名,value=对应的action在容器中的ID值

<props>

<prop key="toLogin.do">toLogin</prop>

<prop key="login.do">login</prop>

</props>

</property>

</bean>

3 ,<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> //这个类是处理返回结果的

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>//viewClass是上面那个类的一个属性,JstlView是他的子类

<property name="prefix" value="WEB-INF/"/> //前缀

<property name="suffix" value=".jsp"/> //后缀

</bean>

完毕,下面介绍运作流程

浏览器发送.do请求时,通过web.xml,调用springmvc框架底层的servlet,将请求交给spring容器来处理。spring容器在创建的时候,即服务器启动时就已经将action注入了,这个时候,控制器调用spring容器的HandlerMapping组建处理,实现请求和ACTION之间的映射。

控制器处理完毕,返回的是一个ModelAndView组建,这个东西封装了模型数据和响应视图的名字,这里相当于struts中的result一样,在spring容器中,控制器调用视图解析器ViewResolver,寻找对应的JSP视图,最后就可以做数据显示了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: