一、写在前面
上回书说道,mybatis的动态SQL的使用,至此,前期准备工作已经完成,现在可以正式做一些小的项目了。
在这篇博客开始之前我先给大家分享一下最近的学习感悟和一些有趣的事。之前和朋友课余时间闲聊的时候,探讨了一个有趣的问题,为什么现在没有人开发一款中文的编程软件,然后去网上搜了一下,才发现我确实有点孤陋寡闻了。
早在00年,就诞生了一款中文编程软件,正好和我一般大,但兄弟我是第一次听说。
抛开政治正确以及民族自信来谈,我认为编程语言只是一种工具,工具的作用和其便利性是最重要的,适当的时候选择适当的工具,我们的工作才有效率,只可惜哥们的英语水平实在堪忧,唉。
javaEE在我们帅气的彭老师的指导下已经进行完毕,接下来的一周就需要我们用这两个多月的所学,来做出一个完整的项目,希望我可以顺利完成。行文至此也不多写了,这周的博客主题是阐述一下servlet的常用的一些方法,且听我慢慢道来。
二、servlet常用的方法
1.什么是servlet?
我们迄今为止学过的所有的代码以及语法,都是为了能实现一定的项目要求,而在服务器端运行的能够用来接收用户的请求并且对这些请求做出响应的java程序,就被称之为servlet。
我们日常浏览的网页是可以随时变化的,所以在被称之为动态网页,而servlet可以通过代码来生成这些网页,以此来响应用户的请求。
而servlet最常用也是最基础的两个方法就是Request请求和Response响应。
2.Request请求
request对象是来获取请求消息数据,目前写的很多项目中经常用到的对象,其中request.getParameter是我用到的最多的一个方法它的作用是返回指定请求参数的值。
使用代码如下:
// 获取数据
String username = request.getParameter("username");
String userpwd = request.getParameter("userpwd");
如果此时你的xml文件或者jsp文件中有类似如下的代码,那么parameter就会帮你获取到name一样的数据:
账号: <input type="text" name="username" ><br>"
密码: <input type="password" name="userpwd"><br>"
3.Response响应
Response用来对用户的请求做出响应,最常用的就是response.getWriter(),可以给用户做出响应,代码如下:
String html = "<!DOCTYPE html>\r\n" +
"<html lang=\"en\">\r\n" +
"<head>\r\n" +
" <meta charset=\"UTF-8\">\r\n" +
" <title>Document</title>\r\n" +
"</head>\r\n" +
"<body>\r\n" +
" <table border=\"1\">\r\n" +
" <tr>\r\n" +
" <th>你好</th>\r\n" +
" </tr>\r\n" ;
html+=
" <tr>\r\n" +
" <td>"欢迎"</td>\r\n" +
" </tr>\r\n" + "\r\n";
html+=
" </table>\r\n" +
"</body>\r\n" +
"</html>";
out.print(html);
可以直接在浏览器给用户做出响应,如下图:
4.处理乱码
刚开始使用servlet的时候,很多朋友可能有过这样的经历,自己的代码明明什么问题都没有,但是出来的结果都是乱码。
这时候就需要将客户端的编码格式和服务器的编码格式变得一致。
我们日常使用的网页也是使用了这种方式,例如我们打开百度主页,查看一下页面的源代码就会发现:
而在servlet中也可以使用相同的方式:
// 处理乱码
//设置服务端的编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//设置客户端的编码格式
response.setContentType("text/html;charset=utf-8");
5.转发
转发指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。
这个概念很好理解,就像是去医院看病挂号,门诊可以将你的看病需求告知相应的科室,你拿着们正挂的号去了相应的科室,科室的医务人员从门诊得到了你的信息和你的大概病症,在科室进行相应的治疗。整个过程你就挂了一次号。
转发可以让请求从服务端跳转到客户端(或跳转到指定Servlet)
特点: 1、服务端行为
2、地址栏不发生改变
3、从始至终只有一个请求
4、request数据可以共享
代码如下:
//请求转发
request.setAttribute("username", "张三");
//接受转发
String username = (String) request.getAttribute("username");
需要注意的是,从作用域中取出来的是对象,需要强制转换为需要的类型,再使用,上方代码就是转换为了string类型。
6.重定向。
使用response对象提供的sendRedirect()方法,可以将网页重定向到另一个页面。
转发和重定向都能让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。
HttpSession session = request.getSession();
session.setAttribute("code", code);
session.setAttribute("email", email);
response.sendRedirect("verification.html");
三、结语。
实践是检验真理的唯一标准,而理论学习的意义也是为了实践。至于你学到的东西能做出来个什么样子,就得看真本事了。希望我的时间和努力不会白费。
毕竟几人真得鹿,不知终日梦为鱼。
版权归原作者 涂碧宇 所有, 如有侵权,请联系我们删除。