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运行流程:
3.整个项目图:
使用到的相关知识:
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的地方写成了配置形式。
本内容由安康学院”雨季”原创!