servlet的创建于java类的创建相同,需要提几点注意:
1.在servlet创建时,display,description设置为空
2.Servlet/JSP Name:是你的servlet命名称。
3.Servlet/JSP Mapping URL:是浏览器访问地址,通常只设置成“/自己的servlet名称”就行。
servlet创建好之后,我们看下它的xml文件信息:
文件中需要提几点注意,用注释写出来了:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name><!--此处名字必须和下面的一样 -->
<servlet-class>web.HelloServlet</servlet-class><!--这是文件位置 -->
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name> <!--此处名字必须和上面的一样 -->
<url-pattern>/HelloServlet</url-pattern><!--这是浏览器中的地址名字,注意在此加上/-->
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file><!--这是欢迎页面,如果没有在地址栏写出要进helloservlet,那么就进来此处 -->
</welcome-file-list>
</web-app>
同时在NewServlet.java文件中,我们也需要注意以下几点:
如果用到中文,必须将注释的两行写上。因为原始是没有的这些代码的。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//如果要使用中文,必须添加这一行,
response.setContentType("text/html;charset=utf-8");//同时在这一行的值中添加charset=utf8
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(" This is ");
out.print(" This is ");
out.print(" This is ");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
这样,我们就创建好Servlet了。
在浏览器中敲入localhost/项目名/NewServlet即可看到上面一个代码所编写出来的页面。如果不敲入/NewServlet,则默认进入index.jsp页面
需要注意的是
1.doGet方法和doPost方法其实是可以和合二为一的,但是为了区分Psot传值和Get传值,需要分别写代码,但为方便,两个方法中写一样的代码就行。
或者用在doGet方法中写上
doPost(request, response);
2.Servlet中没有内置对象。
request和response对象在doGet和doPost方法已经创建:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
我们还需要自己创建session对象:
HttpSession session=request.getSession();
简言之,我们在创建Servlet对象的时候,
因该基本都会先写上:
doPost(request, response);
HttpSession session=request.getSession();
request.setCharacterEncoding("utf-8");//如果要使用中文,必须添加这一行
response.setContentType("text/html;charset=utf-8");//同时在这一行的值中添加charset=utf8
Servlet生命周期--单例模式:
在创建下一个对象的时候,不会再创建新的Servlet对象,而是用已经创建的来实现Post or Get方法。
这叫单例模式。
Servlet中session的参数:
这样的好处就是程序可以允许用户正常通过JSP访问,但是不允许直接访问Servlet。
HttpSession session=request.getSession();
/*true或者无参 如果有相关对象(session),返回相关联对象,
* 否则创建一个session对象
*
* false 如果有相关对象(session),返回相关联对象,
* 否则返回null
*
*/
其实,Servlet创建每个session都是唯一的。我们可以通过
<%=session.getId() %>
来查看我们的sessionID
其次,我们也要设置一个session会话超时登出设置,这个设置在web.xml中:
<session-config><!-- session超时登出设置 -->
<session-timeout>30</session-timeout>
</session-config>