数据库动态乱码问题
String url="jdbc:mysql://localhost:3306/db_name?useUnicode
=true&characterEncoding=utf-8"
在数据库连接后加上问号后的代码
一,什么是servlet
servlet是运行在服务器的一个小程序。
servlet可以接受请求和发送响应
(jsp接受请求和发送响应)
jsp–>转译java文件(Servlet)类
jsp服务器网页文件。
servlet是一个类。
Ie向服务器发送请求的过程中,服务是怎么样接受请求的?
当接受到IE的请求的时候,服务器内部会new出一个
Servlet的实例,调用servlet的
init();初始化servlet对象 ★ ★只会被调用一次
然后调用
service()方法 处理客户的请求 ★ ★每次请求都会被调用
(service里面调用doPost和doGet方法)
最后调用:
destroy()方法 销毁servlet对象 ★ ★只会被调用一次
重写部署项目或者服务器停止
二,怎么样写servlet?
只需要实现Servlet接口
或者继承GenericServlet类
或者继承HttpServlet类
Servlet接口
|—>GenericServlet类
|–>HttpServlet类
一般我们都是继承HttpServlet类,实现doPost()和doGet方法
三,IE怎么样访问servlet?
挂牌 web.xml、MyServletservlet.MyServlet MyServlet /MyServlet
五,写servlet的另一种方式
第1步:包名上右键----new----Servlet----name:servlet名字
然后再下面勾上doPost和doGet方法—>next—
把Servlet/Jsp Mapping URL:中去掉/servlet–
finish就可以了。
第2步:在doGet方法中写上:doPost(request, response);
在doPost中把办业务的4个步骤写上就可以了。
六,web开发流程的改进:
发表的人:jsp文件 Servlet(不太好写标签)
办业务的人: Servlet
发结果的人:jsp文件
总结:
(1)凡属显示数据或者发表单我们就写成:jsp
(2)凡属是操作(接受表单数据操作数据库)
都写成:Servlet
注意:
★★★★★:每次新建servlet或者修改了servlet中的代码一定要
重新部署项目。
★★★★★:删除了servlet类 一定要删除该Servlet
的配置(挂牌的过程web.xml)
doPost()或doGet():
//1,编码---中文 区别:设置request和response的编码
request.setCharacterEncoding("utf-8");
//及设置了response的编码 还设置了浏览器的编码
response.setContentType("text/html;charset=utf-8");
//2.取值---id
String suid = request.getParameter("uid");
int uid = Integer.parseInt(suid);
System.out.print("usid=="+suid);
//3,调dao:查询的方法(既可以查当个也可以查多个)
List list = UsersDao.selById(uid);
//4,根据结果跳到jsp
if(list.size()>0){
//1,重定向:从1个jsp跳到另一个jsp 不能带数据
//response.sendRedirect("selOk.jsp");
//2,转发:从1个jsp跳到另一个jsp 能带数据
//(1)把数据绑定到request上
//request.setAttribute("aaaa",list);//key/value对
//(2)跳到selOk.jsp 同时带上数据
//request.getRequestDispatcher("selOk.jsp").forward(request,response);
//(3)服务器包含:从1个jsp跳到另一个jsp 能带数据
//(1)把数据绑定到request上
request.setAttribute("aaaa",list);//key/value对
//(2)跳到selOk.jsp 同时带上数据
request.getRequestDispatcher("selOk.jsp").include(request,response);
}
注意:servlet乱码解决:
服务器(tomcat–config–server.xml找到Connector 加一个属性): <Connector connectionTimeout=“20000” port=“8080” protocol=“HTTP/1.1” redirectPort=“8443” URIEncoding=”UTF-8” (或useBodyEncodingForURI=“true或者utf-8”)/>
设置项目编码 utf-8(右击项目properties )
设置workspace编码utf-8(windown——preference——(workspace编码utf-8))
设置jsp编码 utf-8 (windown——preference——jsp(utf-8))
out对象的获取要在编码设置之后response.setContentType(“text/html; charset=UTF-8”);equest.setCharacterEncoding(“utf-8”);PrintWriter out = response.getWriter();删除自动生成的:
response.getWriter().append("Served at: ").append(request.getContextPath());
原文链接:https://blog.csdn.net/qq_44534541/article/details/105542382
网友评论