Servlet
总算断断续续的学到了servlet,其中因为种种原因终止了几次,时间稍长便只剩下了点印象,只好从头再来。记得大一不止一个老师说过,学习编程,没有什么捷径,还是要多练习。现在经过亲身实践,深深感受到这句话的正确性。奉劝后来者多敲代码。
前几天看到一个大佬的一句话,感觉很有意思,分享给大家。
写代码是热爱,写到世界充满爱。
加油吧,祝愿各位都有个美好的前程。
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。起到一个桥梁的作用,用于浏览器和应用程序之间进行沟通。
1. 常见的java服务器
首先声明我使用的是tomcat,因为它免费好用又小巧,反正我是这么觉得的,身边同学也用这个,出错也好讨论。
tomcat(免费的 apache)
jetty(免费的 eclipse)
jboss (jboss)
weblogic (bea, oracle)
websphere (ibm)
java se , java ee, java me
servlet, jsp, el, 都属于java ee范畴
2. tomcat 的目录结构 (**)
bin 可执行脚本目录
conf 配置文件目录
logs 日志目录
webapps 应用程序目录
3. 启动和停止 (**)
前提条件: 1. 要安装jdk, 2. 要配置JAVA_HOME 环境变量,都学到servlet了,想必这些电脑都已经有了吧
启动: bin/startup.bat (windows下)
停止: bin/shutdown.bat (windows下)
或者
在启动的黑窗口下 CTRL+C (停止程序,不是拷贝)
可以用浏览器检查它是否真正启动: 在浏览器地址栏输入 http://localhost:8080
http://127.0.0.1:8080
http://192.168.10.240:8080
当端口号为80时可以省略不写
8080是tomcat的默认端口号,当同时启动两个tomcat时就会端口号冲突,就像你去扫别人正在骑的小黄车一样,当然失败。
4. 修改端口号
在conf/server.xml 文件中搜索8080 找到后修改为其它端口号即可
5. 在idea 里配置tomcat(**)
至于为什么用idea,额,跟风吧,大佬都说好用
建一个web项目,点开run,点开edit configurations,点击加号下拉找到tomcat小猫图标,选择local,选项刚开始学没必要修改什么,改个名字吧。fix,ok就好了。下次run就会有tomcat选项了
6. 编写第一个servlet(***)
/**
* 1. 继承 HttpServlet父类
* 2. 使用注解 @WebServlet(urlPatterns = "浏览器访问路径")
* 3. 覆盖父类中 service 方法
*/
@WebServlet(urlPatterns = "/hello")
public class MyServlet extends HttpServlet {
@Override
// Request : 代表请求
// Response : 代表响应
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("你好,世界");
// 用servlet可以返回一段html代码,给浏览器
// 对于中文,需要设置响应采用utf-8字符集,否则会使用英文字符集(iso-8859-1)返回响应,会有乱码问题
resp.setContentType("text/html;charset=utf-8");
// 向resp对象对象的字符输出流中写入的html代码都会返回给浏览器
resp.getWriter().println("<html><body>你好,世界</body></html>");
}
}
7. 浏览器发送请求(***)
语法:
http://ip地址:端口号/servlet地址?参数名1=参数值1&参数名2=参数值2…
?name=张三&pass=123 // name是参数名,张三是参数值, pass是参数名, 123 是参数值
例如;localhost:8080/servlet1?name=张三&pass=123
服务器要获取请求参数:
String 请求参数的值 = request.getParameter(“请求参数名”);
注意:
如果某个参数没有传递,使用request.getParameter()返回的是null值
request.getParameter()返回的总是字符串,需要自己做数据类型转换
7. 请求类型(***)
- get 请求 直接通过浏览器地址发送的请求
- post 请求
表单form既可以发送get请求,也可以发送post请求
区别: 1) get请求会把所有请求参数跟在地址栏之后,不适合发送敏感信息
而post请求不会把请求参数跟在地址栏之后
2) 不要以为post请求是安全的,通过一些网络监测工具仍然可以看到post中的参数信息
http 是不安全的,都是明文发送给服务器的
https 是安全的,会把信息发送给服务器的过程中进行加密
https 和post结合可以保证向服务器传输数据的安全性
3) get请求传输的数据有限制, post请求没有限制(任意大小的数据都可以发送给服务器)
4) get 意味着获取信息(对应查询操作)
post 意味着增,改,删等操作
对于post请求,会有中文乱码问题,解决方法是调用:
// 手工进行解码, 需要放在所有 req.getParameter方法之前调用
req.setCharacterEncoding(“utf-8”);
注意: tomcat 8 已经对get请求中的中文按utf-8进行解码了, 所以程序员不需要对get请求的中文进行额外处理
tomcat 7, tomcat 6 … 对get请求中的中文还需要特殊处理
至于用新版还是用旧版,这个问题从一开始学java装jdk就在让我烦恼,怎么说呢,各有千秋吧,用旧版可以让你多踩踩坑加深印象,用新版让你多了解下新特性。看个人喜好了。