Tomcat的缺省端口是多少,怎么修改
tomcat默认缺省端口是8080
修改方法:
- 找到Tomcat目录下的conf文件夹
- 进入conf文件夹里面找到server.xml文件
- 打开server.xml文件
- 在server.xml文件里面找到下列信息
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>
修改port属性,改成你想要的端口。
Tomcat有几种部署方式
- 直接把Web项目打包成war包放置在webapps下,Tomcat会自动将其部署。
- 在server.xml文件上配置
<Context>
节点,设置相关的属性即可。 - 通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。编写XML的方式来进行设置。
Tomcat容器是如何创建servlet类实例
当容器启动时,会读取在web目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在servlet注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
Servlet接口中有哪些方法及Servlet生命周期
Servlet接口定义了5个方法,其中前三个方法与Servlet生命周期相关:
- void init(ServletConfig config) throws ServletException
- void service(ServletRequest req, ServletResponse resp) throws ServletException, java.io.IOException
- void destory()
- java.lang.String getServletInfo()
- ServletConfig getServletConfig()
生命周期:
- Web容器加载Servlet并将其实例化,容器运行其init()方法进行Servlet的初始化;
- 接受请求时调用service()方法,service()方法会根据需要调用与请求对应的doGet()或doPost()等方法;
- 当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用destroy()方法。
init方法和destory方法只会执行一次,service方法客户端每次请求Servlet都会执行。Servlet中有时会用到一些需要初始化与销毁的资源,因此可以把初始化资源的代码放入init方法中,销毁资源的代码放入destroy方法中,这样就不需要每次处理客户端的请求都要初始化与销毁资源。
get和post请求的区别
- get请求用来从服务器上获得资源,而post是用来向服务器提交数据;
- get将表单中数据按照name=value的形式,添加到action 所指向的URL 后面,并且两者使用"?"连接,而各个变量之间使用"&"连接;post是将表单中的数据放在HTTP协议的请求头或消息体中,传递到action所指向URL;
- get传输的数据量小,这主要应为受url长度限制;而post可以传输大量的数据,所有上传文件只能用post提交;
- get是不安全的,它的请求参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应用使用post;
- get限制form表单的数据集必须为ASCII字符;而post支持整个IS01 0646字符集。
什么情况下调用doGet()和doPost()
form表单默认是get请求,因此默认调用doGet()方法,JSP页面中的Form表单的method属性设置为post的时候,调用的为doPost()方法;为get的时候,调用deGet()方法。
转发(Forward)和重定向(Redirect)的区别
转发是服务器行为,重定向是客户端行为。
转发(Forword)通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。RequestDispatcher可以通过HttpServletRequest的getRequestDispatcher()方法获得。例如下面的代码就是跳转到success.jsp页面。
request.getRequestDispatcher("success.jsp").forward(request, response);
重定向(Redirect) 是利用服务器返回的状态吗来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过HttpServletRequestResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等
4.从效率来说
forward:高.
redirect:低.
JSP工作原理
JSP(Java Server Page)本质上就是一种Servlet,但是与HttpServlet的工作方式不太一样。HttpServlet是先由源代码编译为class文件后部署到服务器下,为先编译后部署。而JSP则是先部署后编译。JSP会在客户端第一次请求JSP文件时被编译为HttpJspPage类(接口Servlet的一个子类)。该类会被服务器临时存放在服务器工作目录里面。
JSP的内置对象有哪些,分别有什么作用
- request(HttpServletRequest):封装客户端的请求,其中包含来自GET或POST请求的参数;
- response(HttpServletResponse):封装服务器对客户端的响应;
- pageContext(PageContext):通过该对象可以获取其他对象;
- session(HttpSession):封装用户会话的对象;
- application(ServletContext):封装服务器运行环境的对象;
- out(JspWriter):输出服务器响应的输出流对象;
- config(ServletConfig):Web应用的配置对象;
- page(Object):JSP页面本身(相当于Java程序中的this);
- exception(Throwable):封装页面抛出异常的对象。
JSP的指令有哪些
- page指令: 指定页面的的一些属性,例如:
- contentType指定文档类型
- pageEncoding指定页面编码格式
- include指令: 包含别一个jsp页面
- taglib指令: 引入一个标签库
JSP中动态include与静态include的区别
动态include:<jsp:include>,包含的动作是在jsp对应的Serlet处理请求时去执行的,每次请求都会执行.
静态include:<%@include%>,包含的动作是在jsp被编译成java文件时执行的, 只有第一次请求时执行.
Cookie和Session的联系与区别
Cookie和Session都是web应用的会话跟踪技术。
Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。存储的数据量大,安全性高。占用服务端的内存资源。
MVC 的各个部分都有那些技术来实现,如何实现
MVC 是Model-View-Controller 的简写。"Model" 代表的是应用的业务逻辑,"View" 是应用的表示面(由JSP 页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
如果文章有错的地方欢迎指正,大家互相交流。感谢关注公众号:developerLeo