Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

时间:2021-09-26 23:06:46

先把实验3的jsp页面复制过来;

WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制;

Java Resources->src下的 cn.edu.henu.bean(User.java 用户数据库操作)和cn.edu.henu.util(DBConnection.java 数据库的连接操作)这两个包

【可以更改默认启动的jsp页面】

<?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>ws_shiyan3</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>addUser.jsp</welcome-file>
1
2
3
4
5
6
7
使用Servlet技术改写用户登录

src -> 新创建一个package “cn.edu.henu.servlet” ->新建一个servlet类名 “LoginCheckServlet” ->URL mapping设置为"/CheckServlet"
改写dopost()方法,把实验三 check.jsp的登陆验证代码复制过来即可
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
PreparedStatement pt=null;
Connection con = null;
User user = null;
try {
//JDBC访问数据库
con=DBConnection.openConnection();//获取数据库连接
String sql="SELECT * from login WHERE user=? AND passwod=?";
pt=con.prepareStatement(sql);
pt.setString(1, name);
pt.setString(2, pwd);
ResultSet rs=pt.executeQuery();
System.out.println("?????????????????????");
if(rs.next())
{
response.sendRedirect("connsuccess.jsp");
}
else{
response.sendRedirect("connError.jsp");
}

} catch (SQLException e) {
e.printStackTrace();}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
大家也可以参考这个 JSP+Servlet 的用户登录
【注意】这里User user = null; 下面黄色报警 所以我刚开始注释掉了,结果CheckServlet页面就404, 后来取消注释才可以

有两种方法配置Servlet
①自动在LoginCheckServlet页面生成的@WebServlet("/CheckServlet")
②在web.xml下面配置
<servlet>
<servlet-name>LoginCheckServlet</servlet-name>//使用类名创建一个对象
<servlet-class>cn.edu.henu.servlet.LoginCheckServlet</servlet-class>//自己创建的servlet类
</servlet>
<servlet-mapping>
<servlet-name>LoginCheckServlet</servlet-name>//实际执行的对象
<url-pattern>/CheckServlet</url-pattern>//自定义的URL Mapping
</servlet-mapping>
1
2
3
4
5
6
7
8
【注意】这里名字要匹配哦
【注意】两个方法只能选一个配置,否则会报错
使用Filter技术解决中文乱码

src -> new Filter ( package的名字是" cn.edu.henu.Filter " , Filter名字是 “EncodingFilter” , MAP的名字我没有改 EncodingFilter
接着在doFilter()下输入 request.setCharacterEncoding(“utf-8”); 即可
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
request.setCharacterEncoding("utf-8");
// pass the request along the filter chain
chain.doFilter(request, response);
}
1
2
3
4
5
6
7
大家可以参考这篇文章或者是 课本158页下面的代码

在web.xml下进行filter的配置,web.xml好像没法写注释欸?= =
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>cn.edu.henu.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern> //拦截所有请求
</filter-mapping>
1
2
3
4
5
6
7
8
【疑惑】这次我没有注释EncodingFilter.java下的代码“@WebFilter("/EncodingFilter")”,但是好像没有报错。。。
---------------------

Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码的更多相关文章

  1. Web---演示servlet技术&lpar;servlet生命周期&rpar;&comma;解决中文乱码问题

    本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...

  2. 【JavaWeb】从零实现用户登录

    1.数据库预备 1.1 SQL 创建数据库 create database db; 创建表 create table userInfo( id int primary key , name ), pa ...

  3. jsp&amp&semi;servlet初体验——用户登录功能实现

    数据库准备-创建db_login数据库  t_user表 1.创建web工程 2.创建用户model   user.java package com.gxy.model; public class U ...

  4. Servlet课程0425(四) Servlet实现简单用户登录验证

    Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class ...

  5. iOS开发一个用户登录注册模块需要解决的坑

    最近和另外一位同事负责公司登录和用户中心模块的开发工作,开发周期计划两周,减去和产品和接口的协调时间,再减去由于原型图和接口的问题,导致强迫症纠结症状高发,情绪不稳定耗费的时间,能在两周基本完成也算是 ...

  6. Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法

    Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...

  7. Servlet中通过过滤器实现统一的手动编码&lpar;解决中文乱码&rpar;

    1.web.xml片段: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  8. Servlet学习&lpar;五&rpar;——通过response设置响应体及中文乱码问题

    1.响应体设置文本 PrintWriter writer=response.getWriter(); 获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲 ...

  9. 编写Servlet,验证用户登录,如果用户名与密码都为&OpenCurlyDoubleQuote;admin”则验证通过,跳转欢迎页面,否则弹出提示信息&OpenCurlyDoubleQuote;用户名或密码错误,请重新输入!”,点击&OpenCurlyDoubleQuote;确定”后跳转至登录页面

    java代码:(Test1) package com.test; import java.io.IOException; import java.io.PrintWriter; import java ...

随机推荐

  1. Mysql 学习笔记

    创建表: create table testtable( id_ bigint not null AUTO_INCREMENT, name varchar(75) null, vmid varchar ...

  2. 【&period;NET进阶】函数调用--函数栈

    原文:http://www.cnblogs.com/rain-lei/p/3622057.html 函数调用大家都不陌生,调用者向被调用者传递一些参数,然后执行被调用者的代码,最后被调用者向调用者返回 ...

  3. linux zookeeper 原理详解

    http://cailin.iteye.com/blog/2014486  直接打开此链接即可 --------------------------------------------------   ...

  4. ylbtech-Unitity-CS&colon;Indexers

    ylbtech-Unitity-CS:Indexers 1.A,效果图返回顶部   1.B,源代码返回顶部 1.B.1, // indexer.cs // 参数:indexer.txt using S ...

  5. 关于程序猿怎样降低程序Bug的若干建议

    毫无疑问,程序猿是善于思考问题的一族. 一个程序的编写都是通过:思考.设计.编写.调试.測试以及执行这些主要的阶段. 但大部分程序猿都有一个问题就是不太愿意測试自己的代码. 他们草草的调式完毕以后就觉 ...

  6. IPC之消息队列详解与使用

    一.    概念 消息队列就是一个消息的链表.对消息队列有写权限的进程可以向其中按照一定的规则添加新消息:对消息队列有读权限的进程可以从消息队列中读出消息.消息队列是随内核持续的.下面介绍三个概念: ...

  7. UVA 1508 - Equipment dp状态压缩

    题意:  已知n个5元组,从中选出k组,使得这些组中5个位置,每个位置上最大数之和最大. 分析:当k>5时,就是n个5元组最大的数之和,当k<5时,就当做5元组,状态压缩,用00000表示 ...

  8. Java中的public、private、protected&comma;函数修饰符

    1.public:public表明该数据成员.成员函数是对所有用户开放的,项目中其他脚本都可以直接进行调用 2.private:private表示私有,私有的意思就是除了脚本之外,项目中其他类都不可以 ...

  9. 前端开发笔记(1)html基础

    HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,note ...

  10. java通过反射调用有参数的方法

    public static void eachCfg(Class Initclass,String taskType){ Field[] fields = Initclass.getDeclaredF ...