Web---演示servlet技术(servlet生命周期),解决中文乱码问题
发布日期:2021-06-29 13:36:43
浏览次数:2
分类:技术文章
本文共 4927 字,大约阅读时间需要 16 分钟。
本节讲解决中文乱码问题的4种方法。
还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学。servlet生命周期演示:
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>演示servlet技术 演示servlet技术
访问FirstServlet
FirstServlet.java:
package cn.hncu.servlet;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FirstServlet implements Servlet{ //只有第一次访问才会被执行一次,最先执行一次! public FirstServlet() { System.out.println("1 构造方法被执行..."+this); } //关闭Tomcat服务器时会执行一次。如果是通过myeclipse关闭的,是不会执行的,因为是直接关闭了java虚拟机。 //最后执行一次 @Override public void destroy() { System.out.println("4 destroy..."+this); } @Override public ServletConfig getServletConfig() { return null; } @Override public String getServletInfo() { return null; } //第一次被访问才执行,在构造方法之后执行一次! @Override public void init(ServletConfig config) throws ServletException { System.out.println("2 init..."+this); String name = config.getInitParameter("name"); System.out.println("name:"+name); } //每次访问都执行,(第一次)init()后执行 @Override public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException { System.out.println("333 servlet"+this); }}
web.xml:
index.jsp firstServlet cn.hncu.servlet.FirstServlet name Jack firstServlet /first
配置需要初始化的参数:
name Jack
在servlet中:
用config.getInitParameter(“name”);去得到name参数的值。演示结果:
我们点击访问:访问FirstServlet
看后台的输出信息:不关闭服务器再去访问:
用myeclipse关闭服务器-因为是直接关闭了java虚拟机,所以不会再运行destroy()方法。也就没有再输出。
用Tomcat的shutdown.bat关闭服务器:
解决中文乱码问题
index.jsp中增加:
以下演示用户登录
web.xml增加的代码:
login cn.hncu.servlet.LoginServlet login /login
LoginServlet.java:
package cn.hncu.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class LoginServlet implements Servlet{ @Override public void destroy() { } @Override public ServletConfig getServletConfig() { return null; } @Override public String getServletInfo() { return null; } private String charset = null; @Override public void init(ServletConfig config) throws ServletException { //法四: charset = config.getInitParameter("character"); } @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { //解决中文乱码问题 //前提:前台页面必须以post方式提交中文---因为post会设置http协议头"Content-Type = application/x-www-form-urlencoded", //这样Tomcat才知道这是编码的字符数据 //法一:在Tomcat的server.xml中的中添加一个属性:URLEncoding="utf-8" //!!!法一是不可取的,因为Tomcat是公共平台,这个项目只是其中的一个项目, //不能把平台看成私有的即最好不要去修改,否则其他项目可能会出现问题 //法二:把Tomcat解错的码还原回来 //这个方法还行,但如果前台传输的很多参数都是中文,那么我们要对每个参数都要进行这样还原,显然比较麻烦。 //还有,如果以后要改编码,就得改源代码,对客户来说比较麻烦。对程序员也一样 //String name = req.getParameter("name"); //byte bs[] = name.getBytes("iso8859-1"); //name = new String(bs,"utf-8"); //System.out.println(name); //法三:这种解决方式是比较好的,但有一个缺点:如果以后要改编码,就得改源代码,对客户来说比较麻烦。对程序员也一样 //req.setCharacterEncoding("utf-8"); //String name = req.getParameter("name"); //法四:其实是在web.xml中把编码设置成参数,然后在这里读取出来,利用“法2”进行设置。以后如果要更改编码,只要更改web.xml中的相应参数设置就OK了 req.setCharacterEncoding(charset); String name = req.getParameter("name"); String pwd = req.getParameter("pwd"); //用name和pwd到后台去访问数据库,以验证该用户信息是否正确(登录是否成功) //本例不是讲解这个,所以省略。 res.setContentType("text/html;charset=utf-8");//告诉浏览器,我下面发的内容是什么格式的东西,什么编码的 String html = " name:"+name+ " pwd:"+pwd+ ""; PrintWriter out = res.getWriter(); out.write(html); //*******另外一个小知识点: //Tomcat项目运行时,加载jar包或类文件的顺序:TOMCAT_HOME\lib --> webapps\项目名\WEB-INF\lib --> webapps\项目名\WEB-INF\classes目录下面的类 //后加载的会覆盖前面的---即后加载有效-和java相反(父类加载机制) }}
有2个小知识点:
1:
Tomcat项目运行时,加载jar包或类文件的顺序:TOMCAT_HOME\lib –> webapps\项目名\WEB-INF\lib –> webapps\项目名\WEB-INF\classes目录下面的类 后加载的会覆盖前面的—即后加载有效-和java相反(父类加载机制)2:
加这个的位置是web.xml中,
演示结果:
一开始未写解决中文乱码时的演示结果:
后台显示:
用中文乱码解决时(不把每一种方法的结果都演示出来了)
转载地址:https://chenhx.blog.csdn.net/article/details/51942252 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月30日 14时38分54秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实用算法题:excel表列序号与十进制数字的互相转化算法讲解!
2019-04-29
1833.雪糕的最大数量 基础排序、栈操作、堆排序 三解so easy!
2019-04-29
多变量线性回归python实现
2019-04-29
pytorch实现几种常用激活函数
2019-04-29
pytorch对MNIST分类
2019-04-29
深度学习在目标检测领域的发展历程综述
2019-04-29
2021江西省数学建模A题
2019-04-29
2021江西省数学建模二题
2019-04-29
2021江西省数学建模三题
2019-04-29
全连接层、卷积层、池化层
2019-04-29
使用pytorch搭建AlexNet
2019-04-29
[系统安全] 三十一.恶意代码检测(1)恶意代码攻击溯源及恶意样本分析
2019-04-29
打破定式,突破屏障,走出自己的创意舒适区
2019-04-29
又一个程序员倒下-程序员防猝死指南
2019-04-29
如何搭建高可用redis架构?
2019-04-29
如何设计出优秀的Restful API?
2019-04-29