✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:JAVA开发者成长之路
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Servlet应用(Request+response对象)
更多内容点击👇
Java Servlet详解(补充,极其重要)
在Servlet中用来处理客户端请求需要用doGet或doPost方法中的request对象。
get请求
post请求
方法名 | 方法说明 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交的数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码 |
欢迎页面
欢迎你
package com.cxyzxc.www.demo01;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/welcomeServlet")
public class WelcomeServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取表单提交的姓名String username = req.getParameter("username");//获取表单提交的年龄String userage = req.getParameter("userage");//服务器端输出获取到的数据System.out.println("客户端发来的信息:姓名:"+username+",年龄:"+userage);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}
通过Hello.html进入登陆页面,然后提交登录信息到Servlet中去。
servlet获取html提交的数据,将其数据打印到控制台。
get请求发送后,在服务器端获取数据产生乱码,是因为服务器和客户端沟通的编码不一致造成的,所以解决办法是在客户端和服务器之间设置一个统一的编码,之后就按照设置的编码进行数据的传输和接收。
在Tomcat7及以下版本,客户端以UTF-8的编码传输数据到服务器端,而服务器端的request对象使用的是ISO8859-1这个字符编码来接收数据,服务器和客户端沟通的编码不一致,因此会产生中文乱码。
由于客户端是以 UTF-8 字符编码将表单数据传输到服务器端的,因此服务器端也需要设置以UTF-8字符编码进行接收。
解决方法:使用从ServletRequest接口继承而来的 setCharacterEncoding(charset) 方法进行统一的编码设置。
response对象用于响应客户请求并向客户端输出信息
方法名称 | 方法作用 |
---|---|
setHeader(name,value) | 设置响应信息头 |
setContenType(String) | 设置响应文件类型、响应式的编码格式 |
setCharacterEncoding(String) | 设置服务端响应内容编码格式 |
getWriter() | 获取字符输出流 |
如果输出内容包含中文,则出现乱码,因为服务器默认采用ISO8859-1编码响应内容
方式一:设置服务器端响应的编码格式和设置客户端响应内容的头内容的文件类型及编码格式,这种方式不推荐
方式二:同时设置服务端的编码格式和客户端响应的文件类型及响应时的编码格式,推荐此方式
在MySQL中新建一个servletdatabase数据库,专门用来学习servlet操作数据库
实现登录功能、展示所有用户功能
#创建表admin
CREATE TABLE IF NOT EXISTS `admin`(
`username` VARCHAR(20) PRIMARY KEY,
`password` VARCHAR(20) NOT NULL,
`phone` VARCHAR(11) UNIQUE NOT NULL,
`address` VARCHAR(20) NOT NULL
);#向admin表中插入数据
INSERT INTO `admin`(`username`,`password`,`phone`,`address`)
VALUES('张三','123456','13112345678','安徽合肥蜀山区');INSERT INTO `admin`(`username`,`password`,`phone`,`address`)
VALUES('李四','123456','13822334455','安徽合肥高新区');
1)创建项目
2)导入响应的jar包
3)创建工具包,创建工具类
4)创建实体类
5)创建AdminDao接口
6)创建AdminDaoImpl实现类
7)创建AdminService接口
8)创建AdminServiceImpl实现类
欢迎页面
欢迎登陆
package cn.lqgx.servlet;import cn.lqgx.entity.Admin;
import cn.lqgx.service.Impl.UserServiceImpl;
import cn.lqgx.service.UserService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet(name = "ServletLogin", value = "/ServletLogin")
public class ServletLogin extends HttpServlet {UserService pUserService=new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");//通过response输出在控制台PrintWriter printWriter =response.getWriter();String userName= request.getParameter("userName");String userPassword= request.getParameter("userPassword");Admin adminNew=new Admin(userName,userPassword);Admin admin=pUserService.selectPUser(adminNew);if(user!=null){printWriter.println("登陆成功");}else{printWriter.println("用户名或密码错误,无法登录
");}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
package cn.lqgx.www;import entity.Admin;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;@WebServlet(name = "ShowAllAdminServlet", value = "/ShowAllAdminServlet")
public class ShowAllAdminServletextends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {List adminList=(List)request.getAttribute("admins");request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");PrintWriter printWriter=response.getWriter();response.setContentType("text/html;charset=UTF-8");printWriter.write("");printWriter.write("");printWriter.write("");printWriter.write("Title ");printWriter.write("");printWriter.write("");printWriter.write("");printWriter.write("");printWriter.write("所有用户信息 ");printWriter.write("");printWriter.write("");printWriter.write("姓名 ");printWriter.write("地址 ");printWriter.write("电话号码 ");printWriter.write(" ");printWriter.write("");printWriter.write("");for (int i = 0; i < adminList.size(); i++) {printWriter.write("");printWriter.write(""+adminList.get(i).getName()+" ");printWriter.write(""+adminList.get(i).getAddress()+" ");printWriter.write(""+adminList.get(i).getPhone()+" ");printWriter.write(" ");}printWriter.write("");printWriter.write("
");printWriter.write("");printWriter.write("");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。
上一篇:深度理解取模