javaweb中servlet总结以及中文乱码问题

一.简介    

    Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
  1、编写一个Java类,实现servlet接口。
  2、把开发好的Java类部署到web服务器中。

  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。

二.Servlet的优点

    1.Servlet是持久的,它只需要Web服务器加载一次,而且可以在不同请求之间保持服务。与之相反,CGI脚本是短暂的,瞬态的。

    2.Servlet是快速的。与CGI相比,由于Servlet只需要被加载一次,自然提供了更好的性能。

    3.Servlet是与平台无关的。

    4.Servlet是可扩展的。由于Servlet是用java编写的,它自然具备了java所能带来的所有优点(健壮的,面向对象的)。

    5.Servlet是安全的。从外界调用一个Servlet的唯一方法就是通过Web服务器,这提供了高水平的安全保障,尤其是在Web服务器有防火墙的时候。

三. Servlet的生命周期

    1.加载和实例化
      2.初始化,容器调用Servlet中的init()方法初始化这个对象。(每个servlet实例,init()方法只能被调用一次)

   3.请求处理,当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest和servletResponse对象,然后调用servlet()方法对请求进行处理。

    4.服务终止,调用destroy()方法

下面是servlet的调用过程



四.创建和配置Servlet

    首先,servlet使用java.servlet和javax.servlet.http两个包中的类和接口。(注:包名以javax开头而不是java,表示Servlet API是一个标准扩展)

    配置servlet需要用到web.xml。web.xml文件总是放在web应用的WEB-INF目录中。这是各个服务器之间唯一通用的位置;其他位置都是非标准的服务器拓展。

下面是我做的一个实例:

    1.打开myeclipse,我在这里创建了一个CSDN的web项目名称,现在我们在com.servlet.study创建一个servlet

    




下面我们打开刚创建的indexservlet,在doGet()方法里写上一段话(默认运行doGet()方法),this is my first servlet


我们保存,运行tomcat,记得把这个项目添加进服务器

我们打开浏览器在地址栏输入


回车


浏览器输出一句话

2.servlet传值方法

    (1)可以用普通的问号传值,用request.getParmarter("")接收;对于网页中的表单,有两个提交方式,用method来控制,如果method="get",就会提交到servlet的doGet()方法;如果method="post",就会提交到servlet的doPost()方法

   (2)修改xml文件,servlet/*传值

例子:


然后打开indexServlet



这里我写了/123

页面输出/123,截断字符串后输出123

你们发现我这里出现了乱码,

如果是在doPost()里写的,我们加上编码格式即可,

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");

如果是在doGet()里写的,我们加上这句话

response.setHeader("Content-type", "text/html; charset=UTF-8");

或者

response.setContentType("text/html; charset=UTF-8");

还有一种方法:

修改tomcat编码格式 
  Apache提供的tomcat服务器中对接收的数据以及返回的数据有一定的编码格式,这个编码是tomcat安装包“apache-tomcat-7.0.63”中的conf文件夹下的server.xml配置文件。我们可以通过更改该配置文件的,在其最后加入URIEncoding="UTF-8"一句,将其编码格式更改为UTF-8或其他指定的编码格式。

我们重置项目,重新运行



猜你喜欢

转载自blog.csdn.net/qq_41410358/article/details/79779379