Maven创建servlet项目演示(三)
上一节用Maven新建了web项目成功后,本文演示在此基础上应用servlet。
从对tomcat服务器进行配置可的过程中可以知道,tomcat作为servlet容器运行,负责处理客户请求,把请求传送给servlet并把结果返回给客户。
这里的servlet作用是处理该客户请求的最终实体类。
servlet实际上是一个有规定接口,属性和方法的java类,tomcat容器与servlet之间的接口是由servlet API定义好的,这个接口定义了tomcat容器在servlet上要调用的方法及传递给servlet的对象。
tomcat服务器会在启动时,将在web.xml中配置好的servlet对象实例化,并加载到服务器的内存中,若接收到HTTP请求,服务器将调用相应的servlet对象来进行处理。
所有的servlet都必须实现javax.servlet.Servlet接口,但是我们在进行http协议相关的web开发时,一般直接通过继承javax.servlet.HttpServlet类来实现。
1.首先修改pom.xml文件,添加servlet依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lei.demo</groupId>
<artifactId>maven-web-demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>maven-web-demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- JUnit配置 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 添加Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.1-b02</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>maven-web-demo</finalName>
</build>
</project>
修改完保存后,项目会从Maven仓库中自动添加servlet-api-3.1-b02.jar包的引用,如果仓库中没有,会自动下载。操作步骤如下:
简单说下:source folder和folder区别。因为本人在创建source folder的时候,总是莫名其妙的创建不了,或创建一个source folder结果它就跑到folder里面去了。(好像是一个bug来着,若你也出现同样的问题,请在创建source folder中以source folder,folder,package不同的形式来创建它。)
source folder :存放java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件. 项目构建后,source folder里面的java自动编译成class文件到相应的bin文件夹中,其他文件也会移到到相应的目录下.
folder :里面可以放入任何文件.包括java源文件,jar文件,其他文件(例如,图片,声音等).在此我说明一下,如果里面含有java源文件,不管程序是否 正 确,eclipse都不会报错,把它们当做普通文件处理.但是项目如果要使用这里面的文件,情况就不同了.
(很多要在Java中访问的文件可以放在src下或者便于区分新建特定名字的source folder目录放在下面,这样的会随着编译自动将java文件被编译到default output folder路径下面(若你重新设置了output folder文件路径,则编译到新设置的路径文件下),而不是java类型的文件,则是直接拷贝过去,这一切对于开发者都是透明的。需要注意的是,无论是使用默认或修改了的putput folder,在myeclipse工作目录中都以不可见的形式存在,当然你可以在文件夹中找到它)
2.新建一个Servlet
在source folder下的src/main/java下创建一个com.sulei.demo包,包下创建一个ServletDemo类。
一个servlet从产生到结束的流程如下:
a. servlet容器创建servlet的一个实例,在需要该servlet处理的请求到时触发。
b.容器调用该实例的init()方法。
c. 如果容器对该servlet有请求,则调用此实例的service()方法。(注意是service而不是servlet)
d. 容器在销毁本实例前调用它的destroy()方法,并还进行垃圾收集。
所以servlet生命周期常常被定义为:加载,实例化,初始化,处理客户请求和销毁。一旦清清了一个servlet,就没有办法阻止容器执行一个完整的生命周期了。
servlet类代码如下:
1 package com.sulei.demo; import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDemo
*/
public class ServletDemo extends HttpServlet {
private static final long serialVersionUID = 1L; public ServletDemo() {
super();
}
//doGet方法处理GET类型的请求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
//doPost处理POST类型的请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8"); String action = request.getParameter("action");
if("login_input".equals(action)) {
request.getRequestDispatcher("login.jsp").forward(request , response);
} else if("login".equals(action)) {
String name = request.getParameter("name");
String password = request.getParameter("password"); System.out.println("name->" + name + ",password->" + password);
}
} }
3.修改web.xml配置文件
web.xml配置文件的内容为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<javaee:display-name>Archetype Created Web Application</javaee:display-name>
<servlet>
<javaee:description></javaee:description>
<javaee:display-name>ServletDemo</javaee:display-name>
<servlet-name>ServletDemo</servlet-name>
<servlet-class>com.sulei.demo.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
4.创建index.jsp
jsp文件内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>用Maven创建web项目,测试Servlet</p>
<a href="demo?action=login_input">登录(demo?action=login_input)</a>
</body>
</html>
5.创建login.jsp
jsp文件内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="demo?action=login" method="post">
Name:<input type="text" name="name" />
Password:<input type="password" name="password" /> <input type="submit" value="登录" />
</form>
</body>
</html>
扩展内容:JSP是基于servlet的扩展,实际上JSP编译后就是servlet文件,不过使用jsp技术使得网页开发变得更加方便而已。
servlet中只能通过out.println()语句输出HTML语法。
JSP网页是传统的HTML文件中加入java程序片段和JSP标签构成的,servlet/JSP容器收到客户端的请求时,首先执行网页中的程序代码,然后把结果以HTML格式响应给客户端。
现在效果图如下:(注意jsp文件存放的位置都是存放在webapp文件夹下)
6.运行代码:右键单击工程名称-->run as -->myeclipse service application--> tomcat 7 .x-->ok
各步骤截图如下:
a.进入index页面
b.进入login页面
c.在窗口可以看到运行java程序获取jsp页面的name和password结果
Maven创建servlet项目演示(三)的更多相关文章
- Eclipse+Maven创建webapp项目<一><二><三>
转-http://www.cnblogs.com/candle806/p/3439469.html Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new ...
- maven课程 项目管理利器-maven 4-1 使用maven创建web项目 5星
本节主要讲了使用maven创建web项目 主要分这三大类: 1 新建maven web项目 2 后续处理普通java项目转web项目需要关注的点 3 maven特色转web需要关注的点 1 新建ma ...
- Eclipse使用Maven创建Web项目
一.Maven插件下载.jdk下载 1.maven下载地址: http://maven.apache.org/download.cgi 2.jdk下载地址: http://www.oracle.com ...
- 简述泛型、用Maven创建Web项目以及在Web项目上整合SpringMVC
表设计 Timestamp列是否取消"根据当前时间戳自动更新" 是否null及默认值选择合理不合理 外键命名规范及更新和删除时的动作是否合理 泛型 类型参数 --允许在外部指定 ...
- 用maven创建web项目(spring Mvc)
用maven创建web项目(spring Mvc) 1.打开cmd进入到你要创建maven项目的目录下: 2.输入以下命令.然后根据提示输入相应的groupId.artifactId.version: ...
- Eclipse使用maven创建SSM-web项目
1.环境准备 (1)maven:apache-maven-3.5.2,我的maven安装在D:\apache-maven-3.5.2,eclipse中maven配置如下: 先add ,添加好自己的ma ...
- 工具idea 基于maven 创建springMVC项目
SpringMVC Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制器一般不 ...
- Eclipse+Maven创建webapp项目<一>(转)
还在为jar下载而烦恼吗?还在为jar依赖关系而烦恼吗?还在为jar冲突而烦恼吗?强大的maven项目管理工具来拯救你们呢?自动下载jar,自动下载jar依赖包.你什么都不用做,只需要在中央仓库中co ...
- 【maven】maven创建web项目-pom文件提示web.xml is missing and <failOnMissingWebXml> is set to true
使用maven创建web项目,选择war类型后,pom文件红叉 提示web.xml is missing and <failOnMissingWebXml> is set to true ...
随机推荐
- wndows系统命令总结
window8系统下 打开运行窗口----------鼠标放到任务栏的windows图标下,右击,弹出菜单中如上图或者 打开运行窗口---------按“WIN+R”键, cmd-------打开命令 ...
- Android开发之Canvas rotate方法释疑
Canvas的rotate()函数本应该是很简单的一个函数,但是由于api手册言之不详,使用中难免有吃不准的地方.下面所记录的几点,都是我在使用中所迷惑过的问题,特此记录. 1,坐标原点在哪里? 如果 ...
- 关于castle和Could not find the dialect in the configuration错误
最近试了试castle,NND,老是报“Could not find the dialect in the configuration”,明明配的没问题,上网搜索所有教程都是这么配的.后来在一国外的网 ...
- 在Java中直接调用js代码(转载)
http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...
- Android向系统相册中插入图片,相册中会出现两张 一样的图片(只是图片大小不一致)
向系统相册中插入图片调用此方法时,相册中会出现两张一样的图片 MediaStore.Images.Media.insertImage 一张图片是原图一张图片是缩略图.表现形式为:android4.4. ...
- CSDN 2013年度博客之星评选——分享几张厦门杭州的美图
亲爱的小伙伴们,作者在6号至20号,一直在休假中,出去也没带电脑,今天回家意外的发现自己有幸成为“CSDN 2013年度博客之星评选”的候选人,在此也谢谢各位小伙伴们的支持,谢谢CSDN的鼓励.我的投 ...
- C#基础总结之七面向对象知识点总结1
class Class //定义一个类 名字是Class { ; string NAME; string deptName; ; //如果是常量 只能获取,不能赋值 public string Nam ...
- Android加载SO库UnsatisfiedLinkError错误的原因及解决方案
Android 应用开发者应该对 UnsatisfiedLinkError 这种类型的错误比较熟悉了,这个问题一直困扰着广大的开发者,那么有没有想过有可能你什么都没做错,也会出现这个问题呢? 我们在 ...
- how to create a framework for ios . cool!
预热. http://www.raywenderlich.com/65964/create-a-framework-for-ios http://insert.io/framework-ios8-xc ...
- VirtualBox Bridged 无线网卡
启动虚拟机后选择右键单击右下角的网络链接图标, 弹出的窗口中选择Bridged Adapter, wlan0 然后选择OK 查看virtual Box主页面中setting中网络的配置是否和刚才一 ...