版权声明:未经本人同意,不得私自转载 https://blog.csdn.net/weixin_41866744/article/details/87892677
Spring+MyBatis环境搭建:
1.依赖jar:
2.web.xml配置实现自动加载applicationContext.xml的Spring核心配置文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>ValidCode</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 当tomcat加载web.xml时,把spring配置文件信息存放在appication对象 WebApplicationContext容器,时ApplicationContext子接口 --> <!-- 设置spring配置文件路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 加载spring配置文件 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
3.applicationContext.xm编写:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 获取数据源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <!-- spring帮助创建SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 扫描器,扫描接口,并创建接口对象交由SpringBean管理--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.tao.mapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> </beans>
Spring+MyBatis环境搭建已经完成,接下来写我们的功能开发代码即可:
package com.tao.pojo; public class Users { 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; } }
package com.tao.mapper; import org.apache.ibatis.annotations.Select; import com.tao.pojo.Users; public interface UsersMapper { @Select("select * from users where username=#{username} and password=#{password}") Users selByUsersPwd(Users users); }
package com.tao.service; import com.tao.pojo.Users; public interface UsersService { /** * 登录 * @param users * @return */ Users login(Users users); }
package com.tao.service.impl; import com.tao.mapper.UsersMapper; import com.tao.pojo.Users; import com.tao.service.UsersService; public class UsersServiceImpl implements UsersService{ private UsersMapper usersMapper; public UsersMapper getUsersMapper() { return usersMapper; } public void setUsersMapper(UsersMapper usersMapper) { this.usersMapper = usersMapper; } @Override public Users login(Users users) { return usersMapper.selByUsersPwd(users); } }
验证码生成类:
package com.tao.servlet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/validcode") public class ValidCodeServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //创建一张图片 //单位:像素 BufferedImage image = new BufferedImage(200, 100, BufferedImage.TYPE_INT_RGB); //透明的玻璃 //向画板上画内容之前必须先设置画笔. Graphics2D gra = image.createGraphics(); gra.setColor(Color.WHITE); //从哪个坐标开始填充, 后两个参数,矩形区域 gra.fillRect(0, 0, 200, 100); List<Integer> randList = new ArrayList<Integer>(); Random random =new Random(); for (int i = 0 ;i<4;i++) { randList.add(random.nextInt(10)); } //设置字体 gra.setFont(new Font("宋体",Font.ITALIC|Font.BOLD,40)); Color[] colors = new Color[]{Color.RED,Color.YELLOW,Color.BLUE,Color.GREEN,Color.PINK,Color.GRAY}; for (int i = 0; i < randList.size(); i++) { gra.setColor(colors[random.nextInt(colors.length)]); gra.drawString(randList.get(i)+"", i*40, 70+(random.nextInt(21)-10)); } for (int i = 0; i < 2; i++) { gra.setColor(colors[random.nextInt(colors.length)]); //画横线 gra.drawLine(0, random.nextInt(101), 200, random.nextInt(101)); } ServletOutputStream outputStream = resp.getOutputStream(); //工具类 ImageIO.write(image, "jpg", outputStream); //把验证码放入到session中 HttpSession session = req.getSession(); session.setAttribute("code", ""+randList.get(0)+randList.get(1)+randList.get(2)+randList.get(3)); } }
登陆类:
package com.tao.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.tao.pojo.Users; import com.tao.service.UsersService; import com.tao.service.impl.UsersServiceImpl; public class LoginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; private UsersService usersService; @Override public void init() throws ServletException { ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); usersService=ac.getBean("usersService",UsersServiceImpl.class); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); String code = req.getParameter("code"); //用户输入的验证码 String codeSession = req.getSession().getAttribute("code").toString(); //放在session中生成的验证码 if(codeSession.equals(code)){ String username = req.getParameter("username"); String password = req.getParameter("password"); Users users = new Users(); users.setPassword(password); users.setUsername(username); Users user = usersService.login(users); if(user!=null){ resp.sendRedirect("main.jsp"); }else{ req.setAttribute("error", "用户名密码不正确"); req.getRequestDispatcher("index.jsp").forward(req, resp); } }else{ req.setAttribute("error", "验证码不正确"); req.getRequestDispatcher("index.jsp").forward(req, resp); } } }
需要导入Jquery.js
页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.7.2.js"></script> <script type="text/javascript"> $(function(){ function flushCode(){ alert("1"); $("a").click(function(){ //浏览器带有缓存功能,不会多次请求相同数据 $("img").attr("src","validcode?date="+new Date()); return false; }); } }) </script> </head> <body> ${error } <form action="login" method="post"> <table> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="password" name="password"/></td> </tr> <tr> <td>验证码:<input type="text" size="1" name="code"/><img src="validcode" width="80" height="40"/><a href="">看不清</a></td> </tr> </table> <input type="submit" value="登录"/><input type="reset" value="重置"/> </body> </html>
验证码其实就是一个字节流,jquery进入时初始化方法访问验证码生成的servlet,返回字节流到前台显示,每次点击看不清,请求一次src,生成新的验证码。关于页面解析,其实一一次请求,到页面时解析dom,不同标签,客户端会帮我们发相应的请求到后台,去响应不同的静态资源。
扫描二维码关注公众号,回复: 5456260 查看本文章