java web 学习记录一下

  • mvc结构实现mysql 连接

  • 什么是mvc

    • MVC是模型(model)、视图(view)、控制(controller)这三个单词上的首字母组成。它是一种应用模型,它的目的是实现Web系统的职能分工。避免all in one 所有代码全部写在一个文件里的一种分工模型。
  • 实现简单登录功能

    • 登录成功,进入sccess.jsp界面,失败返回首页,并输出密码错误

数据库简单编写

  • 创建数据库
create database student;
  • 创建表
create table tbl_user(
userId varchar(11) not null
primary key,
passWord varchar(255) not null
);
  • 导入数据
insert into tbl_user (userId,passWord) values ('admin','1234');
insert into tbl_user (userId,passWord) values ('张三','1234');

idea上准备工作

  • 创建一个干净的meavn项目

  • 把该项目添加web项目

导入依赖

  • junit 是为了便于测试
  • 其他是一些基础包
    • mysql 连接数据库
    • servlet-api servlet服务
    • jsp-api
    • jstl 写el表达式
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b02</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>

连接数据库

  • 使用idea连接本地数据库

编写实体类User

public class User {
private String userId;
private String passWord;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}

UserDao层接口

public interface UserDao {
public boolean getUser(String userID,String userPassWord);
}

UserDaoImpl实现类

public class UserDaoImpl implements UserDao{

    private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/student";
private String root = "root";
private String password = "123456"; @Override
public boolean getUser(String userID,String userPassWord) {
boolean flag = false;
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
String sql = "select * from tbl_user where userId = ? and passWord = ?";
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,root,password);
pstm = conn.prepareStatement(sql);
pstm.setString(1,userID);
pstm.setString(2,userPassWord);
rs = pstm.executeQuery();
if(rs.next()){
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
return flag;
}
}

UserService层接口

public interface UserService {

    public boolean Login(String userId,String userPassWord);
}

UserServiceImpl实现类

public class UserServiceImpl implements UserService{
@Override
public boolean Login(String userId, String userPassWord) {
boolean flag = false;
UserDao userDao = new UserDaoImpl();
flag = userDao.getUser(userId,userPassWord);
return flag;
}
}

编写LoginServlet服务层

public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { boolean flag = false;
String userId = req.getParameter("userName");
String userPassWord = req.getParameter("userPassWord");
UserService userService = new UserServiceImpl();
flag = userService.Login(userId,userPassWord);
if(flag){
User user = new User();
user.setUserId(userId);
user.setPassWord(userPassWord);
req.getSession().setAttribute("user",user);
resp.sendRedirect("jsp/success.jsp");
}else{
req.setAttribute("msg","用户错误");
req.getRequestDispatcher("login.jsp").forward(req,resp);
} }
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}

配置web.xml文件

  • servlet3.0之后可以使用注解,不用配置这个文件,但是是初学者,还是先学会配置web.xml文件
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.hjk.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

编写login.jsp 界面

  • 简单的写了一下,一个表单的提交功能
<form action="login" method="post">
<table>
<tr><span style="color: aquamarine">${requestScope.msg}</span></tr>
<tr>
<td>用户名:</td><td><input type="text" name="userName"/></td>
</tr>
<tr>
<td>密码</td><td><input type="password" name="userPassWord"/></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="submit"/>
<input type="reset" value="reset">
</td>
</tr>
</table>
</form>
  • 写一个登录成功界面sccess.jsp

    -这个文件在web问价夹下面,本来想写一个拦截器,没有登录不能直接访问后面的界面,现在还没有写
<h1><span style="text-align: center"><span style="color: deeppink" >欢迎您,${sessionScope.user.userId}登录成功</span></span></h1>
  • 如果登录失败就返回登录界面

idea默认会先访问index.jsp界面,这里在web.xml配置一下,让他直接访问login.jsp

    <welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>

已经可以登录了,但是还是存在中文乱码,编写一个过滤器CharacterEncoding,让它处理中文乱码

  • 这个包必须导入import javax.servlet.*;
public class CharacterEncoding implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8");
servletRequest.setCharacterEncoding("utf-8");
//不执行filterChain就会一直卡在这里,相当于一直拦截
filterChain.doFilter(servletRequest,servletResponse);
} @Override
public void destroy() { }
}
  • 为过滤文件配置web.xml
    <filter>
<filter-name>characterEncoding</filter-name>
<filter-class>com.hjk.filter.CharacterEncoding</filter-class>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

结果展示

  • 初始界面

  • 登录失败界面

  • 登录成功;不加过滤器张山是不能登录成功的

  • admin

  • 张三

文件的整体结构

一些注意点

  • 导包的时候一定要到对
  • idea有可能在测试的时候没有lib包这个时候需要自己添加lib问价夹,并且把相应的依赖都添加进去

  • 服务器报404 一般是路径错误(比较好解决)
  • 500 可能是一些代码错误,或者jar没到入

Java Web实现用户登录功能的更多相关文章

  1. Intellij IDEA 构建Spring Web项目 — 用户登录功能

    相关软件: 1.Intellij IDEA14:http://pan.baidu.com/s/1nu16VyD 2.JDK7:http://pan.baidu.com/s/1dEstJ5f 3.Tom ...

  2. Java Web实现用户登录界面

    一.学习Java Web需要的技术: Java语言基础:算法基础.常用数据结构.编程规范. 掌握常见的数据结构和实用算法:培养良好的编程习惯. Java面向对象:封装.继承.多态等,面向对象程序设计, ...

  3. 实现Web上的用户登录功能

    关于如何实现web上的自动登录功能 文章来源http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能 ...

  4. 你会做Web上的用户登录功能吗?

    Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能后,我觉得很有必要写一篇文章教大家怎么来做用户登录功能.下面的文章告诉大家这个功能可能并没有你所想像的那么简单,这是一个关 ...

  5. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...

  6. 使用Struts1完成用户登录功能

    1.Struts框架 框架(framework):就是一系列代码和开发模式的整合,使用框架后,所有开发人员都会按照框架提供的规范进行开发,使代码更容易维护和扩展. 使用框架的优点: 1)   易于维护 ...

  7. java web开发_购物车功能实现

    java web开发_购物车功能实现 之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: ...

  8. JavaWeb学习记录(六)——用户登录功能

    使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...

  9. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

随机推荐

  1. CentOS7安装redis5

    1.下载/解压redisredis手册地址:http://redisdoc.com/下载路径:https://redis.io/downloadtar zxvf redis包名 2.编译&安装 ...

  2. FiddlerEverywhere注册账号进行激活失效问题

    有关FiddlerEverywhere通过邮件激活账号时,激活链接提示已失效问题:这个链接有进行一个讨论(https://www.telerik.com/forums/unable-to-activa ...

  3. JDBC几个接口分区叫什么?它们分别有什么用?

    DirverManager类:是JDBC的管理层,作用于用户和驱动之间.该类负责注册和加载JDBC驱动.Connection接口:代表与数据库的链接,并拥有创建SQL语句的方法,以完成基本的SQL操作 ...

  4. Dubbo 推荐用什么协议?

    dubbo://(推荐) rmi:// hessian:// http:// webservice:// thrift:// memcached:// redis:// rest://

  5. HTML 5中的输出元素是什么?

    当你需要计算两个输入的结果并将结果放到一个标签里的时候,就需要输出元素了.比如你有两个文本框(参见下图),你想要让这些文本框数字相加,然后输出给标签. 下面就是如何使用HTML 5代码输出元素. &l ...

  6. Vue2.0一个login跳转实例

    需要解决的问题:store存储登录状态Vue-Router导航钩子拦截路由Vue-Resource获取后台的数据需要判断登录返回的user源码参考原文地址 主要技术栈:Vuex + Vue-Resou ...

  7. canvas动画—圆形扩散、运动轨迹

    介绍 在ECharts中看到过这种圆形扩散效果,类似css3,刚好项目中想把它用上,but我又不想引入整个echart.js文件,更重要的是想弄明白它的原理,所以自己动手.在这篇文章中我们就来分析实现 ...

  8. SDT v0.0.1 上线

    自己的第一个开源组件,断断续续写了有一段时间,感觉可以发布 v0.0.1.SDT 是 SVG Drag Tree 的缩写,一个可以通过拖放 SVG 图标,来生成拥有树形结构的视图与相应数据的前端组件. ...

  9. 【Android开发】富文本

    SpannableString spannableString = new SpannableString("设置文字的前景色为淡蓝色"); ForegroundColorSpan ...

  10. jdbc连接MySQL数据库+简单实例(普通JDBC方法实现和连接池方式实现)

    jdbc连接数据库 总结内容 1. 基本概念 jdbc的概念 2. 数据库连接 数据库的连接 DAO层思想 重构设计 3. 事务 概念 事务的ACID属性 事务的操作 4. 连接池 为什么要使用连接池 ...