servlet基础

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  
loadOnStartup = 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相同

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值