1.JavaEE也不是凭空冒出来的,它实际上是完全基于JavaSE,只是多了一大堆服务器相关的库以及API接口。所有的JavaEE程序,仍然是运行在标准的JavaSE的虚拟机上的。
2.JavaEE最核心的组件就是基于Servlet标准的Web服务器,开发者编写的应用程序是基于Servlet API并运行在Web服务器内部的
3.EJB:Enterprise JavaBean,企业级JavaBean,早期经常用于实现应用程序的业务逻辑,现在基本被轻量级框架如Spring所取代;
下面参考尚硅谷内容整理而来:
idea启动tomcat
命令启动,这种方式可以看出错误提示
方法一
比如 直接放一个工程book到webapps下面,访问地址就是ip+端口+/book/book项目中任何路径文件(文件在哪个文件夹下面,直接写文件夹路径就可以了)
方法二
修改配置文件(不用像方法一约束,只能在webapps下面,也不用访问路径必须是项目名book,可以自定义)
单独的conf目录下面的localhost文件夹下面增加一个xml文件,path就是访问路径,docBase就是本地项目放哪里去了。访问地址和方法一一样,直接放文件路径就可以了。
方法三(常见)
修改配置文件(不用在localhost下面增加xml,现成的修改,比较常见)(都是只能一对一,换了项目就得改这个配置)
conf目录下面的servser.xml中增加方法二截图的内容,path等意义同方法二
其实void返回值的时候,能多次用字符流
响应的乱码问题解决。 服务器的设置为utf-8,浏览器的也要设置content-type为utf-8(浏览器默认国标)
乱码解决优化代码,一句话两端全部设置
resp.sendRedirect(“/hello”);// 重定向
req.getRequestDispatcher(“/hello”).forward(req, resp);// 转发
Redirect
重定向是指当浏览器请求一个URL时,服务器返回一个重定向指令,告诉浏览器地址已经变了(浏览器会收到一个302,和去目的地址Location),麻烦使用新的URL再重新发送新请求,并且更新浏览器的url地址为最新的。(两次请求,两次响应)
Forward
Forward是指内部转发。当一个Servlet处理请求的时候,它可以决定自己不继续处理,而是转发给另一个Servlet处理。(一次请求,一次响应)
cookies与session:
cookies:
浏览器设置启动cookies,是属于浏览器端的技术,原理是把共享信息储存在浏览器中。Cookie由服务器生成,发送给浏览器,浏览器将Cookie的key/value保存到某个文本文件内,下次请求同一网站时就发送该Cookie给服务器。常见应用为保存密码下次免密登录和购物车在付款时最后提取信息。cookies在关闭浏览器后消失(默认设置,此cookies也称之为会话cookies,而且信息是存在内存中的,关闭浏览器就物理不见了。一般浏览器设置了过期时间,那么cookies就是存在硬盘中的,关闭电脑数据都还是在的)。cookies的value只能是简单字符串不能是对象。限制在4kb之内。一台服务器最多在客户端保存20个cookies,一个浏览器最多保存300个cookies。
原始请求没有使用cookie的请求(比如第一次请求),例如name=zt的登录请求,请求头是没有cookie的信息字样的,第一次请求之后服务器会生成name=zt的cookie给浏览器。第二次cookie请求,请求头就会有cookie:name=zt的字样出现。
session:
浏览网站的时候Session开始,关闭浏览器Session结束。session也是通过cookie实现。session由服务器创建,将所有数据放到Session中,一个用户独占一个session ,发送一个key(钥匙,就是cookie方式发送,而且不是全部session内容,只是一个JESSIONID)给客户端,客户端请求拿钥匙来找到自己保存在服务器中的数据 这个钥匙就一个Cookie,名称为jsessionid。上面讲了cookie的原始请求和第二次以后请求,session的请求每次请求头就会有cookie:name=zt,JSESSIONID=xxxxxxx的字样出现。
浏览器A第一次访问Servlet1,服务器会创建一个session,每个session都有一个id号,创建好了后,服务器将id号以cookie的形式回送给客户机(这些是服务器自动完成的)。当浏览器未关闭前再次发请求访问Servlet2时,就会带着这个id号去访问服务器,这时候服务器检索下内存中有没有与之对应的session,有就用这个session为其服务。session是服务器自动完成的。
用户第一次request.getSession时创建。session对象默认在30分钟没有使用,则服务器会自动销毁session。但是用户可以在web.xml文件中手动配置session的失效时间, 用户也可以手动调用session.invalidate方法,摧毁session。
session和cookie的主要区别在于:cookie是把用户的数据写给用户的浏览器(保存在客户机);session技术把用户的数据写到用户独占的session中(保存在服务器)。
jsp就是一个servlet
MVC设计模式:Model(模型)-View(视图)-Controller(控制器)
硬性规定模板必须放在webapp/WEB-INF/templates目录下,静态文件必须放在webapp/static目录下
原理 注意没有就创建,有就更新,是基于key1更新value1的,不是更新整个cookie
(注意,默认都是session级别的周期,关闭浏览器后就会消失,而如果设置了时间,关闭浏览器后还在,只有时间到期了,才会消失。)(时间是格林时间)
(注意:超时是指两次请求的最大间隔时长,如果一直点一直点,超时时间一直会被刷新从而一直没有超时)(负数表示永不超时,极少使用,不然服务器维护session成本太高。)
默认时长1800秒=30分钟
删除
上面定义的var jsonObj 本身是一个json对象 (传参用json字符串,取值存值用json对象)
还得自己写个PersonListType ,或这种方案不好用(下面map有优化方案,用匿名内部类)
CHINA的locale,并且项目准备了properties配置文件,basename是i18n,这样就能得到resoureceBundel对象,并通过getString取配置文件里面的值