您的位置:首页 > 其它

servlet基础

2018-03-02 16:30 330 查看
1、Tomcat容器等级

tomcat->Container->Engine->Host->Servlet->Context

一个context容器对应一个web工程



2、生命周期



3、继承关系



4、一些注意事项

(1)、response.getWriter().append(“serverd at: “).append(request.getContextPath());

response.getWriter()得到输出到网页上的输出流

append()在网页上追加内容

request.getContextPath():输出web工程的名称如:/myservlet

(2)、web.xml的一些内容

<web-app>
<welcome-file-list>
<welcome-file></welcome-file>
<welcome-file></welcome-file>
...
</welcome-file-list>
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<load-on-start>1</load-on-start>  //数值越小表示Tomcat容器启动是servlet加载越先加载。
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
</web-app>


(3)、Tomcat的部署路径

E:\WorkPlace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\myservlet

这里确实有点模糊,Tomcat有自己的webapp,然后再eclipse中是以插件的形式展现的。

(4)一些jsp对象的获取



(5)建立dynamic web 时没有web.xml

解决方法是:在新建工程时,要注意勾选建立web.xml

(6)Eclipse新建Servlet时候,不会自动生成mapping到web.xml,而是在代码中加入注解@WebServlet。

@WebServlet(
displayName = "This is Login Action", //描述
name = "LoginAction", //servlet名称
urlPatterns = { "/servlet/LoginAction" },//url
loadOnS
4000
tartup = 1, //启动项
initParams = { @WebInitParam(name = "username", value = "张三") }//初始化参数
)


链接:http://blog.csdn.net/xulianboblog/article/details/51079534

(7)理解java Web项目中的路径问题

链接:https://www.cnblogs.com/fnz0/p/5595546.html

在超链接中使用相对路径和绝对路径:



在index.jsp页面中访问Herservlet.java相对路径是:servlet/Herservlet;

如果这里写成: /servlet/Herservlet;这里的开头的/表示服务器的根目录

绝对路径是:<% String path = request.getContextPath();%>

“<%=path%>/servlet/Herservlet”

而在web.xml中url-pattern中

必须写成/servlet/Herservlet,表示项目根目录。

(8)重定向与请求转发

重定向:response.sendRedirect()是服务器将新的url发给浏览器,这里的项目的根目录

请求转发:request.getRequestDispatcher(rul).forward(request,response))是服务器内部跳转到新的资源然后返回给浏览器。这里的根目录/表示webcontent目录

链接:https://www.cnblogs.com/chenkeyu/p/7230714.html

(9)使用注解跳转出现问题

@WebServlet 采用注解时名称可任意起 @WebServlet("/student/delete") ,但是在跳转页面或jsp页面时必须加上自己的项目名 例如:Response.sendRedirect("/WEB_CRUD/student/list");此处: /WEB_CRUD为自己的项目名。

@WebServlet("/Tiaozhuan")
<!--重定向和 请求转发(内部转发) -->
<a href="Tiaozhuan">以get方式请求,相对路径方式请求</a>

<% String path = request.getContextPath();%>
<a href="<%=path%>/Tiaozhuan">以get方式请求,绝对路径方式请求</a>


(10)访问的两个方面:

从jsp页面到servlet 这个根据注解或者web.xml 来。看(9)

从servlet到jsp页面 这个要根据是浏览器发起的还是服务器发起的。看(7)

服务器发起的就是webcontent目录,浏览器发起的就是项目名目录

//在这里要吐槽一下,这个路径真的让人烦恼,过段时间估计自己都忘了。学习投入真的大。

(11)获取初始化参数

Servlet获取初始化参数

1).先在web.xml中设置参数,在加入如下代码

<init-param>
<param-name>username</param-name>
<param-value>hu</param-value>
</init-param>


2).在servlet类的init()中调用:

this.getInitParameter(“username”),返回类型是String

(12)mvc的设计思想



MVC模式:

M:Model 模型

V: View 视图

C: Controller 控制

浏览器发出一个请求 -》 Controller接受(在web开发中充当控制器的就是我们servlet) -》 servlet去实例化一个模型层的对象(通常由javabeans去实现一个模型层)-》再去调用我们们的数据库层(简称EIS,全称叫做企业信息系统)-》结果会返回到控制层-》选择合适的视图给用户呈现(视图层主要是JSP)-》最后给用户相应

最开始出现的是model1(模型1)的开发模式

Model1

javabean(逻辑和数据)+jsp (显示)开发模型

维护性和扩展性差



model2的开发模式

Model2:

该开发模型就是MVC思想的体现:

JavaBean(模型层)、Servlet(控制层)、JSP(视图层)、要访问的数据都封装在我们的数据库层,工作原理:

JSP页面给控制层Servlet提交一个请求 ,Servlet实例化模型层的对象 ,模型层访问读取数据库,得到结果反馈给控制层,控制层根据结果给用户呈现不同的页面



注意:这里有一个dao层的概念(data access object),也可以理解为数据模型层

(13)Java的集合类

这个知识点是我的一个软肋,以前都不知道这个集合干些什么,经常分不清哪些什么作用?现在想来这些都是最基础的东西,就像造房子的工具一样,缺了这些工具,举步维艰。要花些时间把这些工具类分清楚,

1)hashcode()和equals()方法重写理解???

不理解为什么重写hashcode()和equals()方法的建议看看hashmap实现原理。put()方法实现:首先hash(key)得到key的hashcode(),hashmap根据获得的hashcode找到要插入的位置所在的链,在这个链里面放的都是hashcode相同的Entry键值对,在找到这个链之后,会通过equals()方法判断是否已经存在要插入的键值对,而这个equals比较的其实就是key。所以这里首先重写hashcode()方法找到相同的链,然后重写equals方法以保证key相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: