Java EE基础知识学习(五)
来源:互联网 发布:大数据时代马云 编辑:程序博客网 时间:2024/04/25 14:47
在之前的学习中,我们主要学习的是JSP的一些使用方法,在这一节中我们将学习关于Servlet的编写。
1、Servlet简单编写
JSP的本质就是Servlet,使用JSP编写我们的Web应用可以帮助我们简化应用表现层的代码,如果我们直接使用Servlet来编写和JSP同样的一个页面,你会发现我们需要使用大量的out语句来给浏览器输出HTML语句。因此MVC规范出现以后,Servlet的责任明确下来,Servlet仅仅作为控制器使用,不需要去生成表现层的代码,这样就让我们的Servlet编写变的更简便了。
例如下面的代码:
a.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body>form id="form1" action="b.jsp" method="post">用户名:<input type="text" name="username">密码:<input type="text" name="password"><input type="submit" value="登录"></form></body></html>
b.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%String username=request.getParameter("username");String password=request.getParameter("password");%></form></body></html>
c.java:
public class Servlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,java.io.IOException { request.setCharacterEncoding("GBK"); response.setContentType("text/html;charSet=GBK"); String username=request.getParameter("username"); String password=request.getParameter("password"); out.println("\r\n"); out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n"); out.println("<html>\r\n"); out.println("<head>\r\n"); out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n"); out.println("<title>Insert title here</title>\r\n"); out.println("</head>\r\n"); out.println("<body>\r\n"); out.println("用户名"+username); out.println("密码"+password); out.println("</body>\r\n"); out.println("</html>"); }}
在上述的三个文件中,a.jsp中我们定义了一个表单,让用户输入用户名和密码,然后b.jsp可以获取到用户的输入,如果我们想直接编写一个Servlet获取用户的输入并且将他们输出到浏览器中,那我们就可以用c.java的这段代码。
在c.java的代码中,首先我们声明了一个类叫Servlet并且它继承了HttpServlet,在这个类中我们重写service方法,在service方法中我们获取了用户的用户名和密码并且输出到浏览其。通过这段代码我们可以看出,如果我们要用Servlet同时负责表现层的代码,会非常麻烦,每一行代码都要用out输出流输出到浏览器中才能实现,所以我们在编写Servlet时尽量避免编写表现层的代码。
2、Servlet的配置
Servlet主要有两种配置方式:
- 在Servlet类中使用@WebServlet注解进行配置。
- 在web.xml中进行配置。
当我们使用Servlet类的@WebServlet注解进行配置的时候,将会用到以下几条属性:
- asyncSupported:指定该Servlet是否支持异步操作模式。
- displayName:指定该Servlet的显示名。
- initParams:给该Servlet配置参数。
- loadOnStartup:将该Servlet配置为load-on-startup的Servlet。
- name:指定该Servlet的名称。
- urlPatterns/value:都是用来指定该Servlet处理的URL。
当我们使用注解配置Servlet时,要注意不要在web.xml的根元素中指定metadata-complete=”true”,同时不要在web.xml中配置这个Servlet。
如果我们要用web.xml配置,则要配置Servlet的名字和URL,分别对应于元素和元素。要想让我们的Servlet页面能够响应用户的请求,我们必须要配置URL。
例如下面的一段代码就是用来在web.xml中配置一个Servlet的:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instancehttp://www.springmodules.org/schema/cache/springmodules-cache.xsd http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>WebTest</display-name> <servlet> <servlet-name>servlet</servlet-name> <servlet-class>Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet</servlet-name> <url-pattern>/ser</url-pattern> </servlet-mapping></web-app>
3、JSP/Servlet的生命周期
在Servlet中主要有三个函数,分别是init、service和destroy函数,当客户端第一次请求一个Servlet的时候,我们就会创建一个Servlet的实例并且使用init方法进行初始化并且使用service方法响应用户,接下来每当客户端请求一次这个Servlet,我们都用调用一次service方法来响应用户,直到调用destroy方法销毁了这个实例,通常我们在关闭Web应用的时候调用destroy方法。以上就是一个Servlet的生命周期,但是还有一种Servlet并不是在用户请求时才创建实例,而是在Web应用启动的时候就创建了实例,这种Servlet我们叫做load-on-startup Servlet。
要想配置一个Servlet成为load-on-startup Servlet,我们可以在web.xml中用以下代码配置:
<servlet> <load-on-startup>1</load-on-startup> </servlet>
或者使用@WebServlet注解配置:
@WebServlet(loadOnStartup=1)
4、Servlet配置参数
配置Servlet时还可以增加额外的配置参数。具体使用方法如下:
在@WebServlet注解中配置:
@WebServlet(name="servlet",urlPatterns={"/ser"}, initParams={ @WebInitParam=(name="username",value="dasyang"), @WebInitParam=(name="password",value="12312")}) }
然后可以使用以下代码获取参数:
String username=config.getInitParameter("username");String password=config.getInitParameter("password");
或者我们可以在web.xml中配置额外参数:
<servlet> <init-param> <param-name>username</param-name> <param-value>dasyang</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>494894</param-value> </init-param> </servlet>
- Java EE基础知识学习(五)
- Java EE基础知识学习(一)
- Java EE基础知识学习(二)
- Java EE基础知识学习(三)
- Java EE基础知识学习(四)
- Java EE 基础知识学习(六)
- Java EE基础知识学习(七)
- Java EE 学习(9) 正则表达式 之(一)基础知识
- Java基础知识学习五(File类)
- java EE基础知识
- Java EE基础知识1
- Java EE基础知识2
- Java EE 基础知识
- Java基础知识(五)
- Java基础知识(五)
- Java基础知识(五)
- java基础知识(五)
- Java EE知识储备(五)
- java设计模式--观察者模式
- 从公司、组织、产品3方面看,如何快速融入新公司
- 剑指offer-二进制中1的个数
- Constraint Layout [Animations | Dynamic Constraints | UI by Java] ( What the hell is this )[Part3]
- 即时通讯:XMPP基础
- Java EE基础知识学习(五)
- Fedora24 安装网易云音乐不能播放音乐,显示网络连接失败的解决方法
- uva11129
- 2048小游戏——可移植安卓
- 冒泡算法改进
- 268. Missing Number
- tensorflow笔记:多层CNN代码分析
- CSS之【基础的2D转换模块】
- Ubuntu 14.04下 Hadoop3.0-alpha 的安装