标签:总结 params 参数 文件 用户 属性 orm ada 配置参数
在上周的S7英雄联盟总决赛中,因为Faker要急着回去吃饭,最终被SSG3:0,白天我还能忍得住,晚上就在被窝里悄悄的笑起来(哈哈哈。。。。自己脑补)。真得劲。
这周学了还算不少东西,但是缺点就是不写博客了,你说你想干啥?还有我发现学习编程还是要多看书,少看视屏,多思考,多写,多总结
我好饿啊。
Servlet通常被称为服务端小程序,是运行在服务器端的程序,用于处理和响应客户端的请求。
主要缺点就是开发效率低,表现层中,所有的HTML标签都要用输出流输出,非常麻烦。在MVC规范出来之后,Servlet作为控制器使用,不在作为视图层。
Servlet是一个特殊的Java类,必须继承HttpServlet。Servlet提供不同的方法用于响应客户端的请求。
doGet:用于响应客户端的GET请求
doPost:用于响应客户端的POST请求
doput:用于响应客户端的PUT请求
doDelete:用于响应客户端的DELETE请求
注意:
doGet和doPost最常用,一般响应请求就要重写上面四种方法,大部分时候,Servlet对于请求响应都是一样的,只需重写service方法即可响应客户端的所有请求。
init(ServletConfig config):创建Servlet实例,初始化Servlet资源
destroy:销毁Servlet,自动调用该方法回收资源(一般都是关闭停止服务器才会调用此方法)
注意:这两种方法无需重写
设置编码方式:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
获取的请求参数:
String name = request.getParameter("name");(单个参数)
获取复选框的参数:
String[] color = request.getParameterValues("color");
获取页面的输出流
PrintStream out = new PrintStream(response.getOutputStream());
Servlet和Jsp区别:
Servlet没有内置对象,原本Jsp中的内置对象都要由程序显式创建
对于静态的HTML标签,Servlet都要使用页面输出流逐个输出
从servlet3.0开始,配置Servlet有两种方式:
@WebServlet注解进行配置
web.xml文件配置
@WebServlet常用属性:
asyncSupported 指定该Servlet是否支持一步操作模式
displayName 指定Servlet的显示名
initParams 为该Servlet配置参数
loadOnStartup 该Servlet配置为load-on-startup的Servlet
name 指定该Servlet的名称
urlPatterns/value 两个属性的作用相同,指定该Servlet的处理URL
关于@WebServlet注解和Web.xml配置的注意事项:
使用的注解的时候:
不要再web.xml文件的根元素(<web-app...>)指定metadata-complete = "true"。
不要再web.xml中配置该servlet。
使用web.xml的时候:
要配置Servlet的名字:对应web.xml文件中的<servlet/>元素。
要配置Servlet的URL:对应web.xml文件中的<servlet-mapping/>,如果没有配置就不能响应用户的请求。
<servlet>
<!-- 指定Servlet的名字 ,相当于指定@WebServlet的name属性 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet的实现类 -->
<servlet-class>cn.zpoor.servlet.FirstServlet</servlet-class>
</servlet>
<!-- 配置Servlet的Url -->
<servlet-mapping>
<!-- 指定Servlet的名字 -->
<servlet-name>firstServlet</servlet-name>
<!-- 指定Servlet映射的Url地址 -->
<url-pattern>/zpoor</url-pattern>
</servlet-mapping>
创建Servlet实例的两个时机:
客户端第一次请求某个servlet,创建servlet实例(大部分都是这样创建的)
Web应用启动时立即城建Servlet实例,即load-on-srtartup Servlet
Jsp/Servlet的生命周期:
创建Servlet实例
Web容器调用Servlet的init方法,初始化Servlet
初始化之后,一直在容器内,接收什么请求,就响应什么请求;或者统一使用Service方法来处理用户请求
Web容器决定销毁Servlet,先调用Servlet的destory方法,通常在关闭web应用之前销毁servlet
为Servlet配置参数的两种方式:
@WebServlet的initParams属性来指定(name:指定参数名 value:指定参数值)
web.xml文件的<servlet/>元素中添加<init-param/>子元素来指定(param-name:指定配置参数名 param-value:指定参数值)
(访问Servlet配置参数通过ServletConfig对象完成,提供的方法Java.lang.String getInitParameter(java.lang.String name):获取初始化参数)(Jsp的内置对象config就是此处的ServletConfig)
ServletConfig获取配置参数的方法和ServletContext方法完全一样(前者获取当前的Servlet配置参数,后者获取整个web应用的配置参数)
try {
//获取ServletConfig对象
ServletConfig config = getServletConfig();
//通过ServletConfig对象获取配置参数
String driver = config.getInitParameter("driver");
String url = config.getInitParameter("url");
String user = config.getInitParameter("user");
String password = config.getInitParameter("password");
} catch (Exception e) {
e.printStackTrace();
}
Servlet作为控制器(Controller):
作为表现层的劣势:
开发效率低,所有的html都需要页面输出流完成
不利于团队协作开发,美工没法参与Servlet的开发
程序的可维护性差,即使修改一个按钮,都要重新编写编译java代码
Jsp作为表现层(View)作用:
负责收集用户的请求参数
将应用的处理结果,状态数据呈现给用户
MVC对应组件:
M:Model 模型 对应javabean
V:View 视图 对应jsp页面
C:Controller 控制器 对应Servlet
Servlet3.0新特性(革命版本):
在javax.servlet.annotation提供如下注解:
@WebServlet:修饰一个Servlet类,用于部署Servlet类
@WebInitParam:为Servlet和Filter配置参数
@WebFilter:修饰部署Filter类
@MultipartConfig:修饰Servlet,指定该Servlet负责处理multipart/form-data类型的请求(用于文件上传)
Web模块支持(web-fragment.xml配置知识)
提供异步处理
Servlet3.1新特性:
强制更改Session id
非阻塞IO(什么阻塞IO,当Servlet读取浏览器提交的数据时,如果数据不可用或者数据没有读取完成,当前线程就会阻塞无法继续向下执行)
底层IO实现原理(基于两个IO流)
ServletInputStream:读取数据的输入流
ServletOutputStream:输出数据的输出流
Servlet总结(Zpoor,你还说你不会Servlet?)
标签:总结 params 参数 文件 用户 属性 orm ada 配置参数
原文地址:http://www.cnblogs.com/zpoor/p/7800217.html