标准Java Web 工程结构
组织结构 | 描述 |
---|---|
tomcat安装目录/webapps/ | Tomcat应用根目录 |
/web应用目录/ | Java Web 应用目录 |
/web应用目录/index.html / .jsp | 默认首页 |
/WEB-INF | WEB应用的安全目录,用于存放配置文件 |
/WEB-INF /web.xml | web.xml是部署描述符文件,是该Web项目核心配置文件 |
/WEB-INF/classes | 存放编译后的classes文件 |
/WEB-INF/lib | 用于存放web用于依赖的jar文件 |
/META-INF/MANIFEST.MF | 包含web应用的版本等信息 |
一个简单的Servlet
class
public class FistServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接收请求发来的参数
String name =req.getParameter("name");
String html ="<h1 style='color:red '>hi,"+name+"!</h1>";
PrintWriter out=resp.getWriter();//向浏览器输去的数据流
out.println(html);//将html发送回浏览器
}
web.xml
<servlet><!--起名-->
<servlet-name>sample</servlet-name>
<servlet-class>Frist.SampleServlet</servlet-class>
</servlet>
<servlet-mapping><!--将Servlet与URL绑定-->
<servlet-name>sample</servlet-name>
<url-pattern>/sample</url-pattern>
</servlet-mapping>
请求参数
通常是用户输入的数据,待Servlet进行处理。
参数名=值1<font color ='red'>&</font>参数名=值2<font color ='red'>&</font>参数名n=.....
Servlet接收请求参数
代码 | 功能 |
---|---|
request.getParameter() | 接收单个参数 |
request.getParameterValues() | 接收多个同名参数 |
out.println("<标签>"+参数+"<标签结束>") | 像当前的网页输出指定的html |
request.getRequestDispatcher("/login.jsp").forward(request,response) | 页面重定向 |
eg:
1.
String name =request.getParameter("name");
PrintWriter out=response.getWriter();
out.println("<h1>name="+name+"</h1>"); //获取
2.
String[] specs =request.getParameterValues("specs");
PrintWriter out=response.getWriter();
for (int i=0;i<specs.length;i++){
out.println("<h1>specs="+specs[i]+"</h1>");
}
Ger与Post请求方法
代码 | 功能 |
---|---|
request.getMethod | 获取请求的方式是哪一种 |
get方式是将数据在URL上显性发送数据。
· http://localhost:8080 /sample?name=zhansan
post方式会将数据放在 " 请求体 " 中隐性发送数据。
· http://localhost:8080 /sample
· 请求体:name=zhangsan
eg:
//分别处理
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
................................
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
.....................................
}
Servlet生命周期
装载 -web.xml
创建 -构造函数
初始化 -init()
提供服务 -service()
销毁 -destroy()
eg:
public FistServlet(){//构造函数
System.out.println("正在创建FistServlet对象");
}
public void init(ServletConfig config)throws ServletException{
System.out.println("初始化对象");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
....................................
}
public void destroy(){
System.out.println("正在销毁");
}
使用注解简化配置
Servlet核心注解: @WebServlet
eg:
@WebServlet("/anno") // '/anno' 就是URL
public class SampleServlet extends HttpServlet{
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
...................................
}
}
启动时加载Servlet
在web.xml使用< load-on-startup>设置启动加载
< load-on-startup>0~9999< /load-on-startup> 0是最高权
eg:
class.
public void init(ServletConfig config)throws ServletException{
.....................
}
xml.
<servlet><!--起名-->
<servlet-name>sample</servlet-name>
<servlet-class>Frist.SampleServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
使用注解:
@WebServlet(urlPatterns = "/anno",loadOnStartup = 2) //使用注解的时候必须设置url,否则会无效