主题:1、虚拟路径映射;2、servletConfig;3、servletContext
一、回顾—用idea来开发servlet
1、打开idea,创建普通java工程:文件file—>new–>project–>两次next—>第二个文本框后面三点中选择项目存放地址,在后面添加项目名
2、将java工程转换成java web工程:在左上角项目名上右击,选择第二项,把web application勾上,默认4.0版本
3、添加servlet模板:file–>ps—>modules–>右边选择第三个dependencies–>点击±->lib–>java–>tomcat服务器里面lib文件夹里面的servlet-api.jar,连点三次OK
4、创建servlet类:左上角src上右击,选择new–》选择servlet—》取类名—》可取包名–》暂时把最下面的勾勾去掉
5、在web.xml中创建一个路由映射:把浏览器中地址映射到服务器中某一个servlet
6、在servlet类中的doget方法中写上一行代码
7、配置调试运行参数,可以自动完成如下工作
编译–》到tomcat服务器中webapps文件夹下创建网站文件夹—》创建web.xml—>复制目标代码到网站里面WEB-INF下面的classes文件夹里面—》启动服务器—》启动浏览器
- run菜单–》点击第5项,再点击edit–》±–》选择tomcat local
- 右边选择server–》文本框后面configure,配置tomcat服务器的位置
- 配置浏览器,配置到文件名
- 点击最下面右边fix按钮,就配置好了,可以点击run运行,会自动启动服务器,自动编译,自动启动浏览器
二、虚拟路径—路由表/api表
1、作用:
浏览器地址栏中输入的地址,传送服务器,服务器如何根据地址来寻找对应的代码程序(servlet)
2、一一映射
一个地址对应一个代码程序
3、多个地址映射到一个代码程序
通过地址栏来获取某个学生的成绩:/student/001,/student/002
我们把具有某种特征的访问地址,归类用同一个代码程序来处理
注意:如果有多条路由匹配地址,则匹配程度越高的优先
4、默认路由
当浏览器输入的地址在路由表中没有找到匹配的路由条目,则用默认路由来匹配
5、根路由
指的是地址栏中指输入根地址,没有子地址,这是匹配/*这条路由
6、补充—如何将servlet中处理结果直接输出到浏览器中
这里是将浏览器看出cmd窗口输出,不是网页文件
// 第一步:通过response参数获取PrintWriter对象,把输出内容写入到这个对象中就会自动输出到浏览器
PrintWriter out=response.getWriter();
// 第二步:把输出内容用write方法写入out
out.write("hello1");
三、servletConfig读取web.xml中的私有参数
1、作用:
有些servlet在处理请求时,需要读取一些初始化参数,可以在web.xml中保存这些参数,servletConfig可以读取保存的数据
保存在何处:web.xml文件
数据属于这个servlet独有,其他servlet不能访问读取
代码中没有提供手段来写这些参数
2、在web.xml中编辑参数
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>ldzy.soft2.Servlet1</servlet-class>
<init-param>
<param-name>schoolName</param-name>
<param-value>ldzy</param-value>
</init-param>
<init-param>
<param-name>AAA</param-name>
<param-value>aaa</param-value>
</init-param>
</servlet>
3、代码中读取参数
// 第一步:通过this的方法来获取ServletConfig对象
ServletConfig config=this.getServletConfig();
// 第二步:ServletConfig对象的方法来读取对应键的值
String schoolName=config.getInitParameter("schoolName");
四、servletContext读取web.xml中的共享参数
1、作用
所有servlet在处理请求时,需要读取一些公共参数,这些参数可以保存到web.xml中,servletContext可以读取这些参数,代码中不能写这些参数
注意:参数是所有servlet共享,每一个servlet都可以读取
2、在web.xml中编辑这些参数
<context-param>
<param-name>companyName</param-name>
<param-value>itcast</param-value>
</context-param>
<context-param>
<param-name>address</param-name>
<param-value>beijing</param-value>
</context-param>
3、代码中读取参数
// 第一步:通过this的方法来获取servletContext对象
ServletContext context=this.getServletContext();
// 第二步:通过ServletContext对象的方法来读取指定的键的值
String companyName=context.getInitParameter("companyName");
String address=context.getInitParameter("address");
// 第一步:通过response参数获取PrintWriter对象,把输出内容写入到这个对象中就会自动输出到浏览器
PrintWriter out=response.getWriter();
// 第二步:把输出内容用write方法写入out
out.write(companyName+":"+address);
五、servletContext来在不同的servlet中共享参数
1、参数存放在哪里
就存放在servletContext对象中,并没有保存到文件中
2、servletContext对象的生命周期
创建时间:该网站第一次接受浏览器访问时
释放时间:tomcat服务器关闭重启,或者该网站长时间(可以设置)没有访问请求到来,就会自动释放
3、写数据
context.setAttribute("companyName","abc");
4、读数据
ServletContext context=this.getServletContext();String companyName=(String) context.getAttribute("companyName");
5、作用
不同servlet交换数据