java spring mvc+mysql 整合写的一个简单的登录
花了半天时间整了一个spring mvc+mysql数据库的一个简单的登录,适合新手,有问题可以留言,互相学习。开发环境:myeclipse8.6+mysql5.1。
首先,这篇文章是建立在上一篇的基础上的,这里主要说mvc,MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。模型就是model,它负责封装应用程序的数据和业务逻辑,视图(view)就是应用程序的显示。控制器(controller)负责接收用户的输入,并命令model或者view做出相应的修改。如图所示:
下面我们要做的就是新建一个项目并且添加插件,请参照上一篇文章,并且在添加支持的时候添加前四个和Spring3.0Web Libraries,(上一篇文章有具体操作)如图所示:
接下来我们把这个项目分为十步走请按照第一张图的目录来操作:
第一步:建立model。代码如下:
public class UserVO { private int id; private String name; private String pwd; public UserVO() { } public UserVO(String name, String pwd) { super(); this.name = name; this.pwd = pwd; } public UserVO(int id, String name, String pwd) { super(); this.id = id; this.name = name; this.pwd = pwd; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
第二步:建立接口类:
import java.util.List; import sun.org.mozilla.javascript.internal.InterfaceAdapter; public interface UserDaoImp{ public void insert(UserVO uservo); public void delete(int id); public void update(UserVO uservo); public UserVO select(int id); public List find(); public UserVO selectByName(String name,String pwd); }
第三步:建立dao类(和数据库交互)这里给出了增删改查:
import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.servlet.jsp.el.Expression; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper; public class UserDao implements UserDaoImp { private JdbcTemplate jdbcTemplate; /* * 查询所有的数据信息 * (non-Javadoc) * @see UserDAOInterface#find() */ public List find(){ String sql="select * from user"; return jdbcTemplate.query(sql, new UserMapper()); } /* * * 使用rowMapper 19行用到, 因为query方法不能直接放回一个数组,所以我们只能通过rowMapper赋值给uservo; * * RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装 */ private static final class UserMapper implements RowMapper{ public Object mapRow(ResultSet rs, int rowNum) throws SQLException { // TODO Auto-generated method stub UserVO uservo=new UserVO(); uservo.setId(rs.getInt("id")); uservo.setName(rs.getString("name")); uservo.setPwd(rs.getString("pwd")); return uservo; } } /* * 删除信息 * (non-Javadoc) * @see UserDAOInterface#delete(int) */ public void delete(int id) { // TODO Auto-generated method stub String sql="delete from user where id=?"; jdbcTemplate.update(sql,id); } /* * 增加信息 * (non-Javadoc) * @see UserDAOInterface#insert(UserVO) */ public void insert(UserVO uservo) { // TODO Auto-generated method stub String sql=" insert into user (name,pwd) values(?,?)"; jdbcTemplate.update(sql,new Object[]{ uservo.getName(),uservo.getPwd() }); } /* * 查询信息 * (non-Javadoc) * @see UserDAOInterface#select(int) */ public UserVO select(int id) { // TODO Auto-generated method stub String sql="select * from user where id=?"; return jdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(UserVO.class),id); } public UserVO selectByName(String name,String pwd){ // TODO Auto-generated method stub String sql="select * from user where name=? and pwd=?"; try{ return jdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(UserVO.class),name,pwd); }catch(Exception e){ return null; } } /* * 更新信息 * (non-Javadoc) * @see UserDAOInterface#update(UserVO) */ public void update(UserVO uservo) { // TODO Auto-generated method stub String sql="update user set name=?,pwd=? where id=?"; jdbcTemplate.update(sql,uservo.getName(),uservo.getPwd(),uservo.getId()); } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } }
第四步,建立登录控制器:
import java.util.HashMap; import java.util.Map; 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 LoginController implements Controller { private UserDao userDao; @SuppressWarnings("unchecked") public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub String userName=request.getParameter("userName"); String userPwd=request.getParameter("userPwd"); Map model=new HashMap(); UserVO userVO=userDao.selectByName(userName, userPwd); if(userVO != null){ model.put("userVO", userVO); return new ModelAndView("WEB-INF/Main.jsp",model); }else{ model.put("error", "Logon failed"); return new ModelAndView("WEB-INF/Login.jsp",model); } } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public UserDao getUserDao() { return userDao; } }
第五步,配置我们的web.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 这里是一个总控制器--> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始化applicationContext.xml文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/classes/applicationContext.xml</param-value> </init-param> <!-- 容器启动时调用这个servlet --> <load-on-startup>1</load-on-startup> </servlet> <!-- 这里的配置信息就是把后缀为*.do的请求都丢给总控制器来分发--> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
第七步,配置我们的applicationcontext.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:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 获取数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <property name="username" value="root"></property> <property name="password" value=""></property> </bean> <!-- 给jdbc模板注入数据源--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 给userDao注入模板--> <bean id="userDao" class="UserDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <!-- 给控制器注入dao类--> <bean id="LoginController" class="LoginController"> <property name="userDao" ref="userDao"></property> </bean> <!-- 配置映射响应器,映射响应器会根据请求文件来决定进入到哪个控制器,--> <bean id="mapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- 这里的key就是你的action请求,后面是要分派的控制器--> <prop key="login.do">LoginController</prop> </props> </property> </bean> </beans>
数据库信息如图:
mysql> select * From user; +----+------+--------+ | id | name | pwd | +----+------+--------+ | 23 | lisi | 123456 | | 24 | 123 | 123 | +----+------+--------+
第八步,给出视图index的代码,只在index.jsp的body加入一句话:
<body> <jsp:forward page="WEB-INF/Login.jsp"></jsp:forward> </body>
第九步,给出login.jsp的代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP ‘Login.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="login.do" method="post"> userName:<input type="text" name="userName"/><br/> passWord:<input type="password" name="userPwd"/><br/> <input type="submit" value="Login"/><input type="reset" value="reset"/> </form> ${error } </body> </html>
第十步,给出登陆后的主页main.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP ‘Main.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 用户名:${userVO.name } 密码:${userVO.pwd } </body> </html>
这样一个简单的mvc+mysql数据库的简单登录界面就算完成了,运行和登录成功如图所示:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。