用SpringMVC框架做一个登录页面的思路和步骤

先来说说思路,用Springmvc框架做一个登录页面所需要什么,一个是Controller文件,一个是映射文件,一个是pom.xml文件,一个是JSP页面,还有一个就是web.xml文件,把这些文件写好,你就可以完成一个简单的登录页面。

再来说说步骤:
第一,遵循SpringMVC六步配置,做好来,参考如下:
先配置好基本配置,web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- 1.配置DispatherServlet,核心控制器 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 404异常 -->
    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>
    <!-- 500异常 -->
    <error-page>
        <error-code>500</error-code>
        <location>/500.jsp</location>
    </error-page>

</web-app>

Springmvc.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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

       <!-- 2.配置HandlerMapping -->
       <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
              <!-- 文件下载时,配置不截取url后缀-->
              <property name="useSuffixPatternMatch" value="false"/>
       </bean>

       <!-- 3.配置HandlerAdapter -->
       <!--<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->

       <!--
              mvc的注解驱动,用来简化配置
                     默认会加载许多内置的类型转换器,如果要使用自定义的类型转换器,需要自己指定
       -->
       <mvc:annotation-driven conversion-service="conversionService">
              <!-- 配置消息转换器 -->
              <mvc:message-converters>
                     <!--<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>-->
                     <!--<bean class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>-->
                     <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                            <property name="supportedMediaTypes" value="application/json;charset=utf-8"/>
                     </bean>
              </mvc:message-converters>
       </mvc:annotation-driven>

       <!-- 4.配置Handler -->
       <context:component-scan base-package="controller"/>

       <!-- 5.配置ViewResolver -->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <property name="prefix" value="/WEB-INF/view/"/>
              <property name="suffix" value=".jsp"/>
              <!-- 6.配置View,如果使用的是jsp视图技术,可以省略不写 -->
              <!--<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />-->
       </bean>

       <!-- 使用tomcat提供的默认Servlet处理静态资源 -->
       <!--<mvc:default-servlet-handler/>-->

       <mvc:resources mapping="/image/**" location="/WEB-INF/img/"/>
       <mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
       <mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>
       <mvc:resources mapping="/images/**" location="/images/"/>

       <!-- 直接访问jsp页面 -->
       <mvc:view-controller path="/userLogin" view-name="login"/>
       <mvc:view-controller path="/showRegist" view-name="regist"/>
       <mvc:view-controller path="/showAjax" view-name="ajax"/>
       <mvc:view-controller path="/showFile" view-name="file"/>


       <!-- 管理自定义转换器 -->
       <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
              <property name="converters">
                     <set>
                            <bean class="converter.String2AddressConverter"/>
                            <bean class="converter.Address2StringConverter"/>
                     </set>
              </property>
       </bean>

       <!-- 配置拦截器 -->
       <mvc:interceptors>
              <!-- 拦截所有请求 -->
              <bean class="interceptor.HelloInterceptor"/>
              <!-- 拦截指定请求 -->
              <mvc:interceptor>
                     <mvc:mapping path="/user/regist"/>
                     <mvc:mapping path="/login"/>
                     <mvc:mapping path="/path/*"/>
                     <mvc:exclude-mapping path="/path/test7"/>
                     <bean class="interceptor.TimerInterceptor"/>
              </mvc:interceptor>
       </mvc:interceptors>

       <!-- 配置文件解析器,id名称必须为multipartResolver -->
       <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
              <property name="maxUploadSizePerFile" value="5000000"/>
       </bean>
</beans>

为了省事,我全部代码都复制过来了,具体有用的是其中的几条,我没整理,你们自己看看吧。

接下来重点就在JSP页面该如何设置了,先看看我这个配置:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">
    <script src="${pageContext.request.contextPath}/js/hello.js"></script>
</head>
<body>
    <h2>用户登陆</h2>
    <span style="color:red">${loginError}</span>
    <form action="${pageContext.request.contextPath}/param/test9" method="post">
        用户名:<input type="text" name="username"> <br>
        密码:<input type="password" name="password"> <br>
        <input type="submit" value="登陆">
    </form>

    <img src="${pageContext.request.contextPath}/images/springMVC.JPG">
</body>
</html>

这里可以先看看,其中有css和js页面,这些都是需要导入进来,如果不需要也可以不要这部分(我也是没有要这部分),然后看到这一段<span style="color:red">${loginError}</span>这是一个插入方法,也就是说如果在Controller文件那里触发了一个关于该方法的if条件,这个方法就会被调用,插入到JSP页面中并且显示出来。在占位符里面的名字与Controller里面的if方法的指定名字是一样的。

<form action="${pageContext.request.contextPath}/param/test9" method="post">

在这个方法里面,param/test9这个是Controller文件里面的RequestMapping的地址,如果JSP有这个就可以直接调用相关的Controller文件方法,
而且这里需要注意一点,用户名和密码的name要和Controller文件里的name要对应,而且不能重复,这样才能让Controller文件准确判断前端传入的name符不符合正确的用户名和密码。

最后看看Controller文件怎么写:

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


 
@Controller
public class LoginController {

    @RequestMapping("/login")
    public ModelAndView login(String username,String password){
        ModelAndView mav=new ModelAndView();
        if("admin".equals(username)&&"123".equals(password)){
            mav.addObject("username",username);
            mav.setViewName("success");
        }else{
            mav.addObject("loginError","用户名或密码错误");
            mav.setViewName("login");
        }
        return mav;
    }
}

注意name要和JSP那边的name一样就行,setViewName是返回JSP的视图名字

猜你喜欢

转载自blog.csdn.net/Andre_dong/article/details/107933558