Spring登录页面(用纯配置方式)

1. spring简介:

 【1】什么是Spring?

*Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入。

   *Spring提供的IOC和AOP应用,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级。

   *Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架和技术整合应用,可以自由选择采用哪种技术进行开发。

 【2】为什么要用Spring?

   Spring的本质是管理软件中的对象,如何创建对象和维护对象之间的关系。

 【3】springMVC简介

       SpringWeb+ MVC 是spring框架非常重要的功能模块。实现了mvc结构,便于简单,快速开发mvc结构的web程序。Spring weg mvc 提供的api封装了web开发中常用的功能。简化了web过程。

 【4】springJDBC简介:

       Spring框架提出了jdbcTemplate类作为数据库访问类,该类是Spring框架数据抽象层的概念,其他更高层的抽象类也是构建于jdbcTemplate类之上。JdbcTemplate类是SpringJDBC数据库操作的核心。

       Spring框架提供的jdbc支持主要由4个包组成,分别是core(核心包),object(对象包),dataSource(数据源包)和suppor(支持包)

       JdbcTemplate类继承自抽象类JdbcAccessor,同时实现了jdbcOperations接口。

       DataSource:获取数据库连接

SQLExceptionTranslator:这个接口扶着对SQLExcetion进行转译工作。

2.spring运行流程:

 

spring存储当前登录用户信息方式_springMVC

3.整个项目图:


spring存储当前登录用户信息方式_springMVC_02

使用到的相关知识:

SpringJDBC,SpringMVC,Spring配置,spring属性注入

设计思路:

1.导入jar包

2.设计数据库

3.设计jsp页面

4.使用springJDBC,实现entity->dao->service业务逻辑。

5.使用springMVC实现jsp页面切换操作。

源码如下:

1.数据库设计:

create table user (
 id int primary keyauto_increment,
 username varchar(20) unique, 
 password varchar(18)
);
insert into user(username,password) values('ww','123'); 
select * from user where username='ww' and password='123';

2.login.jsp

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
  <head>
    <title>登录</title>
       <metahttp-equiv="pragma" content="no-cache">
       <metahttp-equiv="cache-control" content="no-cache">
  </head>
  <body>
  <formaction="login.form" method="post">
  <span>用户名:</span><input type="text" name="username"><br> 
  <span>密码:</span><inputtype="password" name="password"><br>
  <inputtype="submit">
  </form>
  </body>
</html>

3.success.jsp

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
  <head>
    <title>登录成功!</title>
       <metahttp-equiv="pragma" content="no-cache">
       <metahttp-equiv="cache-control" content="no-cache">
  </head>
  <body>
    欢迎你,${username }
  </body>
</html>

4.error.jsp

<%@ page language="java" import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">
<html>
  <head>
    <title>出错!!</title>
       <metahttp-equiv="pragma" content="no-cache">
       <metahttp-equiv="cache-control" content="no-cache">
  </head>
  <body>
    出现错误!
  </body>
</html>

5.servlet中web.xml配置:

<?xmlversion="1.0" encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"version="2.5">
  <welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <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>
  <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:spring-mvc.xml</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.form</url-pattern>
  </servlet-mapping>

</web-app>

6.spring-mvc.xml设计:

<?xmlversion="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"xmlns:util="http://www.springframework.org/schema/util" 
       xmlns:jee="http://www.springframework.org/schema/jee"xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:jpa="http://www.springframework.org/schema/data/jpa"xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
              http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd
              http://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsd
              http://www.springframework.org/schema/jeehttp://www.springframework.org/schema/jee/spring-jee.xsd
              http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd
              http://www.springframework.org/schema/data/jpahttp://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
              http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd">
       <!--数据连接操作  -->
      <!--数据源 -->
 <bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!--数据库驱动  -->
    <propertyname="driverClassName" value="com.mysql.jdbc.Driver"/>
    <!-- 连接数据库的URL-->
      <propertyname="url" value="jdbc:mysql://127.0.0.1/test"/>
      <!--连接数据库的用户名 -->
      <propertyname="username" value="root"></property>
      <!--连接数据库的密码 -->
      <propertyname="password" value="root"></property>
 </bean>
 <!-- 配置jdbc模板-->
 <bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource"ref="dataSource"></property>
 </bean>
 <!-- 配置注入类-->
      <!-- 配置userDao-->
  <bean id="userDao"class="dao.impl.UserDaoImpl">
    <property name="jdbcTemplate"ref="jdbcTemplate"></property>
  </bean>

  <!-- 配置userService-->
  <bean id="userService"class="service.impl.UserServiceImpl">
    <property name="userDao"ref="userDao"/>
  </bean>

 <bean id="handlerMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <!-- 指定请求和Controller对应的关系-->
   <property name="mappings"ref="urlMappings" />
 </bean>
 <bean id="login"class="controller.Login">
   <property name="userService"ref="userService"></property>
 </bean>
       <!--定义请求映射表-->
       <util:propertiesid="urlMappings">
          <prop key="/login.form">login</prop>
       </util:properties>
   <!-- 定义视图解析器-->
<beanid="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix"value="/" />
    <property name="suffix"value=".jsp"></property>
</bean>
</beans>
7.entity->User.java
package entity;
public class User {
       private int id;
       private String username;
       private String password;
       public int getId() {
              return id;
       }
       public void setId(int id) {
              this.id = id;
       }
       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;
       }
       @Override
       public String toString() {
              return "User [id=" + id + ",username=" + username + ", password="
                            + password + "]";
       }
}

8.dao->UserDao.java

package dao;
import entity.User;
public interface UserDao {
       public User getUser(String username,String password);//查找这个用户
}

9.dao.impl->UserDaoImpl.java

package dao.impl;

importorg.springframework.jdbc.core.JdbcTemplate;
importorg.springframework.jdbc.core.RowMapper;
importorg.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;

import dao.UserDao;
import entity.User;

public class UserDaoImplimplements UserDao{
    private JdbcTemplate jdbcTemplate;
     public void setJdbcTemplate(JdbcTemplatejdbcTemplate) {
              this.jdbcTemplate = jdbcTemplate;
       }
       @Override
       public User getUser(String username, String password) {
              String sql="select * from user where username=?and password =?";
              RowMapper<User>rowMapper=ParameterizedBeanPropertyRowMapper.newInstance(User.class);
              try {
                     returnjdbcTemplate.queryForObject(sql,rowMapper,username,password);
              } catch (Exception e) {    //这里这个处理方法真的很low....
                     return null;
              }

       }

}

10.service->UserService.java

package service;

import entity.User;

public interface UserService{
       public User getUser(String username,String password);//查找这个用户
}

11.service.impl->UserServiceImpl.java

package service.impl;


import service.UserService;

import dao.UserDao;

import entity.User;


public class UserServiceImplimplements UserService{

       private UserDao userDao;

       public void setUserDao(UserDao userDao) {

              this.userDao = userDao;

       }

       public User getUser(String username,String password) {

              return userDao.getUser(username, password);

       }

}

12.controller->Login.java

package controller;

importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.springframework.web.servlet.ModelAndView;
importorg.springframework.web.servlet.mvc.Controller;

import entity.User;
import service.UserService;

public class Loginimplements Controller {
       private UserService userService;
       public void setUserService(UserService userService) {
              this.userService = userService;
       }
       @Override
       public ModelAndView handleRequest(HttpServletRequest request,
                     HttpServletResponse response) throws Exception {
              String username =request.getParameter("username");
              String password =request.getParameter("password");
              System.out.println(username+":"+password);
              User user = userService.getUser(username, password);
              ModelAndView result = null;
              System.out.println(user);
              if (user != null) {
                     request.getSession().setAttribute("username",username);
                     request.setAttribute("password",password);
                     result = new ModelAndView("success");
              } else {
                     result = new ModelAndView("error");
              }
              return result;

       }
}


总结:这个示例其实对spring算是比较入门的内容了。MVC设计模式和平时的servlet写法是一致的。唯一不一样的就是把所有的new的地方写成了配置形式。



本内容由安康学院”雨季”原创!