15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 2018-5-25 JSP_Web_MVC开发(18)-Servlet简介及例子

2018-5-25 JSP_Web_MVC开发(18)-Servlet简介及例子

时间:2023-05-30 23:45:01 | 来源:网站运营

时间:2023-05-30 23:45:01 来源:网站运营

2018-5-25 JSP_Web_MVC开发(18)-Servlet简介及例子:JSP+DAO的设计模式开发之中,使用最多的概念:request、session(属性、注销)、application。此类开发存在以下问题:

【Servlet简介】

Servlet意思是服务器端小程序,它是Java实现的CGI程序。与传统的CGI程序不同的是,Servlet采用的是多线程的方式进行处理,所以性能更加优秀。

Servlet是一个纯粹运行在服务器端的Java程序。开发历史上先有了Servlet,然后由Servlet产生了JSP,主要是因为Servlet的页面输出非常不方便,受到微软ASP技术的启发后诞生了ASP。

但是并不是说Servlet没有任何用处了。相反,Servlet在架构设计上的重要概念就体现出来了。




【第一个Servlet程序】

任何一个Servlet程序都是一个Java程序,如果使用Eclipse开发,在src目录下保存程序。

src目录下所建立的所有*.java程序最终都会保存在WEB-INF/classes目录中。

建立一个新的Dynamic Web Project--ServletProject,为了方便代码编写,让其生成web.xml文件。

所有的Servlet程序都一定要继承javax.servlet.http.HttpServlet类,此类定义如下:

public abstract class HttpServlet extends GenericServlet implements java.io.SerializableHttpServlet是一个抽象类,抽象类的使用原则就是必须有子类,而且子类要覆写方法。此时选择要覆写的方法为doGet():

protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException例 定义HelloServlet类

在项目的src目录下新建一个类HelloServlet,选择继承自HttpServlet类

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@SuppressWarnings("serial")public class HelloServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out=resp.getWriter();//取得客户端输出 out.println("<html>"); out.println("<head><title>第一个Servlet</title></head>"); out.println("<body>"); out.println("<h1><font color=/"red/">Hello World!</font></h1>"); out.println("</body>"); out.println("</html>"); out.close(); }}Servlet程序并不是依靠主方法运行的,它需要Web容器执行,而Web容器要想识别此程序,则需要修改web.xml文件,增加Servlet的配置。

<!--此处表示定义一个Servlet的配置--> <servlet> <!--配置的Servlet名称,与servlet-mapping对应--> <servlet-name>helloServlet</servlet-name> <!--配置此Servlet所在路径,一定要保存在Web-INF/classes下--> <servlet-class>cn.mytest.servlet.HelloServlet</servlet-class> </servlet> <!--Servlet访问的映射路径--> <servlet-mapping> <!--与处理的Servlet对应--> <servlet-name>helloServlet</servlet-name> <!--访问路径,一定要有“/”--> <url-pattern>/hello.do</url-pattern> </servlet-mapping>如果要进行乱码处理,处理的是服务器端回应的乱码程序,此时可以加入如下代码:

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html"); PrintWriter out=resp.getWriter();//取得客户端输出 out.println("<html>"); out.println("<head><title>第一个Servlet</title></head>"); out.println("<body>"); out.println("<h1><font color=/"black/">这是Hello World!</font></h1>"); out.println("</body>"); out.println("</html>"); out.close();}今后通过Servlet输出数据,一定要控制编码问题。而且代码必须在resp.getWriter()之前

通过第一个程序可以清楚的发现,Servlet最麻烦的不在于程序的编写,也不在于配置,而是在内容的输出上(html代码嵌入)。

在Eclipse之中,除了手工配置之外(建议用手工),还可以利用工具自动完成配置。




自动生成的HelloServlet.java代码如下:

package cn.mytest.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebInitParam;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class HelloServlet */@WebServlet( urlPatterns = { "/hello.do" }, initParams = { @WebInitParam(name = "helloServlet", value = "cn.mytest.servlet.HelloServlet") })public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); }}注意:web.xml没有任何改动。

运行结果

总结

今后开发建议不要用自动创建,还是手工创建比较好。

关键词:例子

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭