概述
简单点说,关于JavaWeb基础,也就是Servlet、JSP 以及 MVC 模式编程。
Servlet
一个继承了HttpServlet 的 Java 类,可用于接收网络中的请求并做一些处理。
目前常用的类长这样:
1
2
3
4
5
6
7
8
9
public class Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
//对传过来的请求做的一些处理
}
}
关于路径的配置
在web.xml中配置
1
2
3
4
5
6
7
8
<servlet>
<servlet-name>ServletTest</servlet-name>
<servlet-class>Servlet文件的地址</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/在服务器中映射的地址</url-pattern><!--基于WebApp地址来映射-->
</servlet-mapping>
-
<servlet-name>、<servlet-class>和<jsp-file>元素
<servlet> 必须含有 <servlet-name>和<servlet-class>,或者<servlet-name>和<jsp-file>。
- <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是惟一的
- <servlet-class>用来指定servlet的完全限定的名称。
-
<servlet-mapping>
<servlet-mapping>含有 <servlet-name> 和 <url-pattern>
- <servlet-name>:Servlet 的名字,唯一性和一致性,与<servlet> 元素中声明的名字一致。
- <url-pattern>:指定相对于 Servlet 的 URL 的路径。该路径相对于 web 应用程序上下文的根路径。<servlet-mapping>将 URL 模式映射到某个 Servlet ,即该 Servlet 处理的 URL。
通过注解配置
@WebServlet注解的相关属性
- asyncSupported:声明servlet是否支持异步操作模式
- description:servlet的描述信息
- displayName:servlet的显示名称
- initParams:servlet的初始化参数
- name:servlet的名称
- urlPatterns:servlet的访问URL(指定了该servlet在浏览器上的访问url)
- value:servlet的访问URL
- loadOnStartup:指定servlet是否应用启动时加载(必须保证,value或urlPatterns有值,否则,就需要采用传统servlet配置方式进行配置,即在web.xml中配置)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@WebServlet(
name = "UserServlet",
urlPatterns = {"/userlogin"},
loadOnStartup = 1 //1的优先级最高
)
public class UserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//一些处理
}
}
request、response参数介绍
request
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class UserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//对request传来的数据进行转码。
request.getParameter("username");//从请求中获取username这个key所对应的value,返回的一般是字符串。
request.getParameterValues("username");//如果请求中有多个相同的key传的不同的值,通过这个方法得到一个String[]。
request.getAttribute("username");//得到请求中之前通过setAttribute传入的Attribute,可以是任何类型的数据。
HttpSession session = request.getSession();//从请求中获取一个HttpSession对象,可以通过session.setAttribute("user",User)在浏览器中添加Session。
RequestDispatcher disp = request.getRequestDispatcher("要跳转的地址//相对地址");//请求调度器,disp可以将request和response两个对象的所有信息一起转发给目的地址。
}
}
response
1
2
3
4
5
6
7
8
9
10
11
public class UserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
reponse.setContentType("text/html;charset=utf-8");
response.sendRedirect("跳转的地址,这里需要的是绝对地址,所以要在前面加上request.getContextPath()");
PrintWriter out = response.getWriter();//然后通过 out.println("xxx");就可以直接向浏览器输出内容。
}
}
JSP
概述
呃,简单点说,JSP就是一个可以嵌入Java语句的 html 页面。
基本语法
指令
JSP指令用来设置与整个JSP页面相关的属性,JSP指令语法格式:
1
<%@ directive attribute="value" %>
这里有三种指令标签:
指令 | 描述 |
---|---|
<%@ page … %> | 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等 |
<%@ include … %> | 包含其他文件 |
<%@ taglib … %> | 引入标签库的定义,可以是自定义标签 |
表达式
1
<%=(new java.util.Date()).toLocaleString()%>
流程控制
这里举for循环的例子,if、switch、while 同理。
1
2
3
<% for(int i = 0;i<prolist.size();i++){ %>
<!--一些html标签-->
<% } %>
一个简单的完整的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
</head>
<body>
<table width="300" border="1" cellspacing="1" cellpadding="1" style="text-align: center";>
<thead>
<tr>
<th> 序号 </th>
<th> 内容 </th>
</tr>
</thead>
<%
String[] arr={"1001", "1002", "1003", "1004", "1005" };
for(int i =0;i<arr.length;i++){
%>
<tr>
<td> <% out.println(i+1); %> </td>
<td> <% out.println(arr[i]); %> </td>
</tr>
<% } %>
</table>
</body>
</html>