创建第一个servlet实例:
· 导入servlet的jar包
· 创建一个class类实现HttpServlet
·根据提交方式重写doGet或doPost方法,在内部完成要实现的逻辑
get是显示的URL限制了请求长度,而且有安全隐患,post是隐式提交
在web.xml中配置
<servlet>
<servlet-name>hello实例的文件名</servlet-name>
<servlet-class>全路径</servlet-class>
<load-on-startup>2</load-on-startup>数字越小初始化越早,必须大于1
</servlet>
<servlet-mapping>
<servlet-name>hello实例的文件名</servlet-name>
<url-pattern>/asd实例的虚拟路径</url-pattern>
</servlet-mapping>
配置虚拟路径,/,/a/
ServletContext获取获取全局变量或获取资源文件
在web.xml中配置的全局参数,可以用servlet获取到
在点properties的资源文件配置,也可以用servlet获取到
如何在web的xml文件内配置全局变量::在跟标签外添加标签
<context-param>
<param-name>name</param-name>
<param-value>value</param-value>
</context-param>如何在点properties文件内配置变量::
name=value
创建servlet
获取webxml内的全局变量
创建一个servlet类根据提交方式,选取重写的方法:在方法内调用创建servleContextt对象
再调用context.getInitParameter(“name”)返回值是string类型的
普通方式获取点properties资源文件的内容
先创建一个properties(这个叫属性对象,可以接受properties文件的内容)对象,
Properties properties=new Properties()
然后用properties的对象调用load方法,因为需要传入输入流对象(InputStream)
properties.load(in)
所以就再创建一个InputStream对象,该对象需要读入文件
InputStream in=new FileInputStream(“url”)
用properties对象调用getProperty()方法需要传入String类型的参数,返回值也是string类型的
String n=properties.getProperty(“name”)
这样会出错,报错的原因是找不到properties文件,因为web项目被发布后,路径,并不是按照原本的项目路径,所以需要重新获取路径。 而且要把需要获取的点properties文件放在webContent目录下的新建文件夹内
创建servletContext对象,然后调用getRealPath()需要传入文件所在项目的路径,返回值是String类型的
ServletContext context=getServletContext()
String path=context.getRealPath(“file/web.properties”)
关闭输入流
in.close()
然后就可以了。
用servletContext获取点properties文件的配置内容
先创建Properties对象和servletContext对象
Properties properties=new Properties()
ServletContext context=getServletContext()
然后再调用servletContext对象的getResourceAsStream(“”)需要传入文件在项目中的相对url,返回值是InputStream类型的
InputStream in=context.getResourceAsStream(“file/web.properties”)
关闭输入流
in.close()
用classloader获取点properties文件配置
创建properties对象,
Properties properties=new properties()
用classloader获取资源文件内容
InputStream in=this.getClass().getClassLoader().getResourceAsStream(“../../file/web.properties”)
因为classloader的虚拟路径的参考是在tomcat发布的class路径,其实发布的地址和参考地址有误,需要网上两级才行。
关闭流
in.close(0
HttpServletRequest
获取前端表单提交的数据,
String 是=request.getParameter(“变量名“)
获取前端表单的所有数据
Map<String String[]> map=request.getParameterMap();
Set<String> keyset=map.keyset();
Iterator<String> it=keyset.iterator()
whlie(it.hasNext()){
String key=it.next();
String value=map.get(key);
syso(key+"="+value);}
获取所有表头数据
Enumeration<String> headernames=request.getHeaderNames()
while(headernames.hasMoreElement()){
String headername=headernames.nextElement();
String headervalue=request.getHeader(headername);
syso(headername+"="+headervalue);}
HttpServletResponse
将后端的数据处理显示到前端。
PrintWriter pw=response.getWriter();
pw.print(“想要输出的东西”);
pw.close
以字符流写出数据
>response.getWriter().write("<h1>abc</h1>")标签的作用可以发挥
以字节流写出数据
response.getOutputStream().write(“asdasdasd”.getBytes());
后端控制页面跳转
设置状态码为301,条状状态
resopnse.setStatus(301)
设置跳转的对象和方式
response.setHeader(”Location”,:需要跳转的页面”)