作者:邹爱红
撰写时间:2019年05月18日
如何自定义servlet
new 一个class类,servlet实现的本质是需要继承一个类 httpservlet,
- 如何调用 有两个方法 doget dopost
当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse)。
- form运行方式:当form框里面的method为get时,执行doGet方法
当form框里面的method为post时,执行doPost方法
- get数据量长度有限制,而Post则没有限制,
- GET方式:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低。
POST方式:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。
- 如何访问 在web xml的文件里面,去配链接访问
点进web.xml配置的soure
<servlet>
<servlet-name> DemoServlet </servlet-name>
<servlet-class>com.ly.web. DemoServlet</servlet-class> 这个路径是当前servlet存在的路径 按住ctrl键会有一行蓝色的线,就是写对了
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/servlet/DemoServlet</url-pattern>指定它的访问方式
</servlet-mapping>//指定它的路由
发布方式:点开绿色的那个箭头,然后选择manage Deployments点进去
在server的这个下拉框选择myeclipse Tomcat
点add进入这个页面,下拉框选择要发布的项目
然后运行项目:
第一种 Run Server 一般不要用默认的
第二种 debug server 用这个比较好
servlet中的四个对象:
servletConfig servletContext request response
怎样获取servletConfig 对象:
ServletConfig sc=this.getServletConfig();//获取servletConfig
因为servlet中的接口已经把这个方法写好了,getServletConfig可以获取里面的参数
//1.可以这样获取
System.out.println(sc.getInitParameter("username"));
//2.还可以这样去获取
Enumeration<String> e=sc.getInitParameterNames(); //用枚举来接收
while (e.hasMoreElements()) {
String string = (String) e.nextElement();
System.out.println(string);
}
但是这个参数要去web里面定义好
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param> 在servlet初始化的时候就可以把那个参数放进去
servletContext 也可以拿 ,配置不一样
需要这样去配置
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
//第一种
ServletContext sct=this.getServletContext();
//第二种方式 通过servletconfig去获取servletcontext
// ServletContext sct1=this.getServletConfig().getServletContext();
System.out.println(sct.getInitParameter("username"));
结果:就拿到root
request 请求
request.setCharacterEncoding("UTF-8");
System.out.println(request.getParameter("username"));
System.out.println(request.getParameter("password"));
System.out.println("uri: "+request.getRequestURI());//统一资源标识符,指的是路径的前半段
System.out.println("url: "+request.getRequestURL());//同一资源定位符,定位这个资源在哪里
request.getSession().getAttribute("");//将content的值传到jsp里面,用来交互的
request.setAttribute("", "");//不把它放到session里面也可以做
response:响应,回应一下有没有数据
response.setHeader("Refresh","3");//设置每隔3秒就自动刷新一次
// response.setStatus(302);//状态码302就代表重定向,状态码得到的是一个异常,然后自定义异常,跳转到自定义的页面去
// resp.setHeader("location","http://www.baidu.com");//
重定向和转发它的区别在哪里:重定向没有参数,只是跳转页面,转发有参数。带参数跳转页面
重定向:地址栏改变/参数不共享
response.sendRedirect("");重新发布请求
转发:地址栏不变,参数共享
request.setAttribute("username", "123");//前面是key,后面是value,键值对的形式,在jsp里面如何拿到这里负的值,前面的是变量名,后面的是赋值
//getRequestDispatcher 得到我们的请求路径 forward转发的意思,就是转发这个请求
request.getRequestDispatcher("/jsp/demo.jsp").forward(request, response);