基于Servlet、JSP、JDBC、MySQL登录模块(包括使用的过滤器和配置)
遇见前文的注冊模块,本篇是登录模块。主要包含登录主界面,和登录相关编写的LoginAction、LoginDao和LoginService。以及配置的Filter。以下按逻辑顺序记录具体过程和代码:
一、在前文的index文件夹点击登录button后。通过javascript跳转至LoginAction。
<script type="text/javascript">
function login(){
var th = document.form1;
if(th.username.value==""){
alert("用户名不能为空! 。");
th.username.focus();
return ;
}
if(th.pswd.value==""){
alert("password不能为空! ! ");
th.pswd.focus();
return ;
}
th.action="<%=path%>/servlet/LoginAction";
th.submit();
}
</script>
二、就是关于登录这个事件,须要创建三个文件各自是LogingAction,是个Servlet。LoginService是个接口,LoginDao实现上面的接口,查询数据库。
跟前文的注冊模块一样的哈。
LogingAction.java
package com.product.login.action; import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.product.login.dao.LoginDao;
import com.product.login.service.LoginService; public class LoginAction extends HttpServlet { private LoginService service;
/**
* Constructor of the object.
*/
public LoginAction() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
} /**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { this.doPost(request, response);
} /**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
String path = request.getContextPath();
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String pswd = request.getParameter("pswd");
List<Object> params = new ArrayList<Object>();
params.add(username);
params.add(pswd);
boolean flag = service.login(params);
out.println("username = " + username);
out.println("pswd = " + pswd); if(flag){
request.getSession().setAttribute("username", username);
response.sendRedirect(path + "/main.jsp");
}else{
out.println("登录失败 ");
}
out.flush();
out.close();
} /**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
service = new LoginDao();
} }
要点:创建一个Session,将username存进去传递给main.jsp。
也即在main.jsp的时候我要知道当前是谁在登录。
if(flag){
request.getSession().setAttribute("username", username);
response.sendRedirect(path + "/main.jsp");
}
LoginService.java
package com.product.login.service;
import java.util.List;
public interface LoginService {
public boolean login(List<Object> params);
}
LoginDao.java
package com.product.login.dao; import java.util.List;
import java.util.Map; import com.product.jdbc.dbutil.JdbcUtils;
import com.product.login.service.LoginService; public class LoginDao implements LoginService {
private JdbcUtils jdbcUtils;
public LoginDao(){
jdbcUtils = new JdbcUtils();
}
@Override
public boolean login(List<Object> params) {
// TODO Auto-generated method stub
boolean flag = false;
String sql = "select * from userinfo where username = ? and pswd = ?";
try{
jdbcUtils.getConnection();
Map<String, Object> map = jdbcUtils.findSimpleResult(sql, params);
flag = (!map.isEmpty()) ? true : false;
}catch(Exception e){
e.printStackTrace();
}finally{
jdbcUtils.releaseConn();
}
return flag;
} }
三、这样假设登录成功的话就跳转到了main.jsp界面:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuemkxMjI1NjI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
main.jsp代码例如以下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/frameset.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>后台管理系统</TITLE>
<META http-equiv=content-type content="text/html; charset=utf-8">
</HEAD>
<FRAMESET rows=105,* cols="*" bordercolor="04376E">
<FRAME name=ads marginWidth=0 marginHeight=0 src="<%=path%>/top.jsp"
frameBorder=0 noResize scrolling=no longDesc="">
<FRAMESET rows=675 cols=198,* frameborder="yes">
<FRAME name=list marginWidth=0 marginHeight=0 src="<%=path%>/left.jsp"
frameBorder=0 noResize scrolling=yes longDesc="">
<FRAME name=main marginWidth=0 marginHeight=0
src="<%=path%>/postdata.jsp" frameBorder=0 scrolling=yes longDesc="">
</FRAMESET>
<NOFRAMES>
</NOFRAMES>
</FRAMESET>
<body>
</body>
</HTML>
能够看到main.jsp在书写上利用了<frameset>标签。在里面嵌套<frame>,各自是top.jsp left.jsp postdata.jsp.使用说明參见:链接1 链接2
在index.jsp里添加了底部的jsp,使用的是iframe:
<IFRAME name="top" align="default" src="<%=path %>/bottom.jsp"
frameBorder=0 width=100% scrolling=no height=88>
<h1> </h1>
</IFRAME>
正好能够对照其差别,详见链接1 链接2 链接3 iframe使用时经常要和target配合使用。參见 链接1 链接2
top.jsp left.jsp postdata.jsp这三个的代码就不贴了。在源代码里。
四:filter的使用
起因是浏览器直接输入http://localhost:8080/xianfengYan/main.jsp 这时还没有登录,没有验证。我们不希望游客訪问这个界面,因此须要加个过滤器进行过滤,直接将页面跳转至index.jsp.
新建包package com.product.filter;
MyFilter.java
package com.product.filter; import java.io.IOException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class MyFilter implements Filter { @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//过滤用户的请求,推断是否登录 HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpServletResponse httpServletResponse = (HttpServletResponse)response;
httpServletRequest.setCharacterEncoding("utf-8");
httpServletResponse.setCharacterEncoding("utf-8");
String path = httpServletRequest.getContextPath();
String username = (String)httpServletRequest.getSession().getAttribute("username");
if(username == null){
httpServletResponse.sendRedirect(path + "/index.jsp");
}
chain.doFilter(httpServletRequest, httpServletResponse);
} @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } }
然后再web.xml里进行配置:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.product.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/main.jsp</url-pattern>
</filter-mapping>
url-pattern里表示过滤的页面,我们指定过滤/main.jsp这个界面。
代码下载链接:http://download.csdn.net/detail/yanzi1225627/7448175
版权声明:本文博客原创文章。博客,未经同意,不得转载。
基于Servlet、JSP、JDBC、MySQL登录模块(包括使用的过滤器和配置)的更多相关文章
- 基于Servlet+jsp的web计算器
基于Servlet+jsp的web计算器 这次老大为了让我们自己复习web中页面的跳转给布置得任务 天下代码一大抄,关键看你怎么抄 首先我想到的计算算法不是什么堆栈,是简单的(其实很复杂,但是我就只需 ...
- 创建jsp+Servlet+JavaBean+JDBC+MySQL项目的过程
1 根据需求建立Mysql数据,确立数据库的表的字段.属性.主键,外键等.下面我使用的数据库名dev ,表名user,字段 name,设置为主键.用户名不能为空,字段password,密码 2 在E ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- servlet+jsp+jdbc实现从数据库查询用户信息到页面
工程创建这里就不在累述了,直接从显示User信息列表开始. 备注:我用的是servlet3的注解功能实现的,所以不需要配置web.xml 这是我的工程目录: 首先我们创建实体类: public cla ...
- Servlet+JSP+JDBC综合案例
层级关系: 一.Util包 包里面写一个JDBCTools.java文件 功能:实现数据库连接返回一个Connection对象,并且可以实现数据库相应资源的关闭! 注意事项: 1.定义成员变量 1 p ...
随机推荐
- ASP.NET 运行
ASP.NET 运行 对于ASP.NET开发,排在前五的话题离不开请求生命周期.像什么Cache.身份认证.Role管理.Routing映射,微软到底在请求过程中干了哪些隐秘的事,现在是时候揭晓了.抛 ...
- 乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern)
原文:乐在其中设计模式(C#) - 责任链模式(Chain of Responsibility Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 责任链模式(Chain of R ...
- Spring.net-业务层仓储
Spring.net-业务层仓储 本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一节,我们已经把项目框架的雏形搭建好了,那么现在我来开始业务实现,在业务实现的过程当中,不断的来完善我们 ...
- BZOJ 3236 AHOI 2013 作业 莫队算法
题目大意:给出一些数,问在一个区间中不同的数值有多少种,和在一个区间中不同的数值有多少个. 思路:因为没有改动,所以就想到了莫队算法.然后我写了5K+的曼哈顿距离最小生成树,然后果断T了.(100s的 ...
- 纯 Swift 封装的 SQLite 框架:SQLite.swift
SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架. 特性: 简单的查询和参数绑定接口 安全.自动类型数据访问 隐式提交和回滚接口 开发者友好的错误处理和调试 文 ...
- zabbix 实现curl 显示器
1.进入Configure->Templates 2. 新建一个模板 3.新建模板,并保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGFpND ...
- hdu 1575 Tr A(矩阵高速电源输入)
Tr A Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- centos下一个bash: XXX: command not found解决方案
最近想centos通过做Android工程建设.配置jdk和Android sdk后,也同时/etc/profile将java和Android环境变量配置成,但它不能像windows 在相同,直接使用 ...
- windows 设置脚本IP
毫无疑问,在windows设置IP非常方便,因为有操作简单,直观的界面.通过图形用户界面设置IP在一般情况下是足够.但是,对于那些谁经常出差,由人产生的转换工作,这样的变化IP无疑耗时且不方便.假设一 ...
- Java读书笔记三(字符串)
1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...