WEB项目

1.web项目

运行环境web容器----->web程序的运行环境
web容器:tomcat最常用的,glassfish等等 weblogic、websphere收费
的等等
2.tomcat的安装
tomcat与jdk版本对应
2.1解压 并了解tomcat的目录结构
bin 启动停止的命令都在这个目录下
conf 关于tomcat的配置信息
lib目录 tomcat提供的jar JavaEE只是一个平台标准提供了接口
具体的实现由各web容器自己完成,当然也有容器自己的jar
webapps 这里面是默认的项目发布目录
里面包含了一些项目,这些项目有提供给我们学习的,也有帮助
2.2启动和关闭tomcat
a.配置环境变量
JAVA_HOME
PATH %JAVA_HOME%\bin
b.启动
bin/startup.bat 双击即可 从浏览器中访问http://localhost:8080出现首页
就说明tomcat就安装成功
c.关闭
bin/shutdown.bat 双击即可

3.手动开发第一个WEB项目
3.1 熟悉web项目的目录结构
发布的目录结构
3.2创建项目的目录结构
a.在webapps下构建 比如项目名称aaa,创建aaa文件夹
b.aaa文件下构建WEB-INF目录
c.在WEB-INF创建web.xml文件
直接从root项目中粘贴过来,留下头尾即可
d.在aaa目录下创建一个静态页面文件index.html
e.启动tomcat
在地址栏中
http://localhost:8080/aaa/index.html
http://ip地址:port/项目名/页面(项目目录)
3.3手动写一个
a.写一个类继承HttpServlet
重写doGet方法,输出一个语句
b.编译
javaEE只提供了标准,没有提供实现 实现容器自己去完成的
对于tomcat jar都放在了tomcat/lib/*.jar
配置classpath环境变量
set classpath=D:\java\apache-tomcat-8.5.35\lib\servlet-api.jar
c.发布到tomcat容器中配置web.xml文件
使用aaa项目
c.1先把class拷贝到WEB-INF的classes目录下(简历classes目录–>有包建立包)
c.2配置web.xml文件

<servlet>
	<servlet-name>helloServlet</servlet-name>
	<servlet-class>HelloServlet</servlet-class>
 </servlet>
<servlet-mapping>
	<servlet-name>helloServlet</servlet-name>
	<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

c.3重启tomcat访问servlet
http://ip地址:port/项目名servlet的urlpattern

4.在eclipse中建立web项目
4.1创建---->Dynamic web project
界面中填写project name---->Servlet(起名子即可)
target runtime---->new runtime
5.
6.Servlet的讲解
6.1Servlet生命周期 继承HttpServlet
init方法----------->初始化Servlet
service方法------>处理请求的
一般不需要重写service方法,重写doGet,doPost方法即可
如果不重写service方法,Servlet会根据请求时那种方法,get
请求调用doGet方法,post请求调用doPost方法
destory方法------>不用去管它
注意:我们也可以直接继承GenericServlet 不继承HttpServlet
HttpServlet本身就是GenericServlet的子类,提供了更多的
服务,我们一般继承HttpServlet,生命周期中的三个核心方法
都是GenericServlet中的
我们直接用的时候直接继承HttpServlet即可
然后重写doGet,doPost方法,分别代表get请求和post请求
其实不管get请求,还是post请求,处理方式类似,所以一般
习惯在doGet中调用一下doPost 或 在doPost中调用一下doGet

6.2 Servlet的配置信息
init()无参数 init(ServletConfig)
参数

<init-param>
		<param-name>hello</param-name>
		<param-value>helloword</param-value>
		</init-param>

ServletConfig类中包装了当前Servlet的配置信息
6.3 Servlet 请求和响应
a. 请求数据是封装在HttpServletRequest对象中的
响应数据是封装在HttpServletResponse对象中的
b. Servlet如何获取请求数据
请求数据如何提交给Servlet
如 果表单action属性是访问Servlet的url
超链接href属性是访问Servlet的url
url使用相对路径----->相当于当前项目http://ip:port/项目名/
只要写Servlet的url(/不需要)
url使用绝对路径----->相当于http://ip:port
写/项目名+urlpattern内容(需要/)
获取请求数据
request.getParameter(请求表单的名称)
request.getParameterValues()---->针对复选按钮
超链接(地址栏)如何提交请求数据
get请求提交的数据会在地址栏中显示
post请求提交的数据地址栏中显示不出来
多个请求数据中间&符号隔开
c.请求数据的中文问题
c.1 post请求提交中文 get请求请不要提交中文(也可已解决)
request.setCharacterEncoding(项目的编码);----------->post请求中的
c.2响应
reponse 设置响应头
response.setContentType(“text/html;charset=项目编码”);

6.4 Servlet好像做了页面的工作
将来Servlet主要做控制,业务调用。不做页面,页面内容交给jsp
我们还没学jsp,现在拿Servlet既做业务逻辑处理也做页面
Servlet最终作为控制器使用
响应去另外的页面如何处理
重定向 reponse.sendRedirect(url)----->发送了新的请求
跳转的方式

欢迎页------>web.xml文件进行配置

<welcome-file-list>
		<welcome-file>login.html</welcome-file>
	</welcome-file-list>	

6.5 Servlet实例的创建
a.web容器创建,只创建一次
b.我们之前看到的servlet是在下给你器发送请求,Servlet实例才会被创建
Servlet实例也可以在项目启动的时候直接创建,将来用于加载项目中的一些
准备数据 在web.xml文件中的Sevlet配置中配置如下
例如 <load-on-startup>数字</load-on-startup>

7.会话管理
7.1全局范围的数据ServletContext(上下文)
a.全局数据配置
b.ServletContext的一些常用方法
getContextPath()----->/项目名称
getRealPath(" ")//得到项目的发布路径—>不同的eclipse
位置可能不一样,有的直接就在tomcat的webapp下,有的
是在工作目录下的
如:D:\java\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0
\wtpwebapps\servletlesson2
getServerInfo() 获取web容器(还可以湖区很多关于web容器的信息)
类的一些方法信息,可以查询帮助文档
c.保存数据(是全局的)
ServletContext实例,整个项目中对象是唯一的
servletContext.setAttribute(“属性名”,“属性值”)
(强制类型)servletContext.getAttribute(“属性名”);
d.把Servlet作为一个页面,计算该页面的访问量(刷新一次也算一次新的访问)
e.ServletContext的监听器
e.1 ServletContextListener(生命周期)
需要配置web.xml文件,监听器才会起作用

<listener>
	<listener-class>servlet.ContextListener</listener-class>
	</listener>

1.2请求范围内(HttpServletRequest request)
a. request.setAttribute(“属性名”,“属性值”);
request.getAttribute(“属性名”);
同一个请求内有效(url地址不能发生变化)
b. 之前讲解的sendRedirect是重定向会发送新的请求
如果点击超链接,也是发送新的请求
如何去另外一个页面,还是同一个请求呢
要用的是跳转 forward
c.除了首页之外,我们习惯把页面藏到WEB-INF目录下
这样就避免了直接访问项目目录下的页面
放到WEB-INF下的 必须通过forward才能访问到

1.3用户范围(HttpSession)
a.request.getSession()//直接获取session没有就创建
request.getSession(boolean create) //有都是直接用,如果true没有session就创建 一个, 如果false,没有就返回null
b.session的原理
当发送请求,服务器第一次有session创建创建时,会给session分配一个
唯一的标识。服务器给客户端响应的时候,会把这个sessionId跟随响应写
到客户端机器,下次当用户再次发送请求,sessionId会跟随请求发送给服务
器,服务器会去验证sessionId。就能够分清楚谁是谁?(这个技术在web中是
通过cookie来实现的)
所以直接关闭浏览器,session就课能没有销毁,就存在不安全的因素
c.修改之前的ListServlet案例
以后Servlet不用来做页面,只做控制,页面交给jsp来做
d.session的监听器
一定要做安全退出
HttpSessionListener监听session的创建和销毁
session的销毁:a.调用invalidate()
b.有效时间到了(一段时间内没有和服务器产生任何交互,就会失效)
到web.xml文件中配置

<session-config> <session-timeout>30</session-timeout> </session-config>

2 Cookie
2.1Cookie = new Cookie(name,value)
cookie.setMaxAge()
reponse.addCookie()
request.getCookies();
目录:IE------>Internal选项----->设置
C:\Users\Administrator\AppData\Local\Microsoft\Windows
2.2如果cookie禁用了需要使用url重写(jsp再去看)

3.过滤器
3.1post请求中的编码问题
每个处理的地方都需要做request.setCharacterEncoding(“utf-8”)
能不能就一次处理
过滤器---->对请求进行拦截,拦截后可以做中文处理、权限控制等
然后交给Servlet处理----->响应时还要经过过滤器–>再响应
3.2创建一个类实现Filter接口
在web.xml中进行配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值