〇、项目中使用到的具体技术:

  1. jsp
  2. Servlet
  3. Tomcat
  4. structs2
  5. Ajax
  6. Session和Cookie
  7. SQL Server

一、jsp

参考博客:https://blog.csdn.net/qq_43318391/article/details/111005214

JSP(JavaServer Pages)是html的一种拓展,其特点是能够在页面中嵌入Java代码,在浏览器加载页面的时候执行这些java代码,以此实现与服务器端的业务交互,进而生成动态的网页。

二、Servlet

Servlet运行在服务端的Java小程序,是sun公司提供的一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。

Servlet的实质就是java代码,通过java的API动态地向客户端输出内容。

Servlet规范:包含三个技术点(三大组件)
1)servlet技术——核心技术
2)filter技术——过滤器
3)listener技术——监听器

示例:

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
27
28
package com.cloudchart;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;

@WebServlet("/test")
public class test extends HttpServlet {
private static final long serialVersionUID = 1L;

public test() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append("Served at: ").append(request.getContextPath());
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}

web.xml中配置servlet。

当然,以上的Selvlet由eclipse生成,已经作了注解。旧版本的servlet需要手动配置web.xml文件,servlet2.5以后,servlet的配置直接在Java代码中进行注解配置。

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>自定义名称</servlet-name>
<servlet-class>处理请求的类的完整路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>自定义名称</servlet-name>
<url-pattern>请求名</url-pattern>
</servlet-mapping>

三、Tomcat

Web开发中的常见概念

  • B/S系统和C/S系统
    Brower/Server:浏览器 服务器 系统 —– 网站
    Client/Server:客户端 服务器 系统 —– QQ、大型游戏

  • web应用服务器
    供向外部发布web资源的服务器软件

  • web资源
    存在于web应用服务器可供外界访问的资源就是web资源
    例如:存在于web应用服务器内部的Html、Css、js、图片、视频等

1)静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、 JS、图片、多媒体。
2)动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问 web页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP

javaWEB领域:动态资源即通过java代码去动态地生成html。

tomcat目录结构

  • bin

    bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。

    很多环境变量的设置都在此处,例如可以设置JDK路径、tomcat路径
    startup 用来启动tomcat
    shutdown 用来关闭tomcat
    修改catalina可以设置tomcat的内存

  • conf

    conf目录主要是用来存放tomcat的一些配置文件。

    server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
    web.xml可以设置tomcat支持的文件类型
    context.xml可以用来配置数据源之类的
    tomcat-users.xml用来配置管理tomcat的用户与权限
    在Catalina目录下可以设置默认加载的项目

  • lib

    lib目录主要用来存放tomcat运行需要加载的jar包。

  • logs

    logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
    在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中
    在linux环境中,控制台的输出日志在catalina.out文件中

  • temp

    temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)

  • webapps

    webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。

  • work

    work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
    清空work目录,然后重启tomcat,可以达到清除缓存的作用。

四、Structs

Struts2是一个比较出色的基于MVC设计模式的框架,是由Struts1和WebWork发展而来的,性能也比较稳定,现在是Apache软件基金会的一个项目。

struts2项目的基本框架,是一个三层结构。action从service接口得到数据负责处理业务与过滤业务,把数据给网页。service是定义接口,serviceimpl是定义接口的实现,是功能代码编写地方,它从daoimpl接口中得到数据,而dao是对数据库进行操作的代码。简而言之,action调用serviceimpl,service实现serviceimpl,serviceimpl调用daoimpl,dao实现daoimpl。

Struts的基层结构,jsp页面是表示层View, Action是业务逻辑即控制层Control,Dao、DaoImpl、Service、ServiceImpl都是数据访问层的东西。一般性Service、ServiceImpl是连接 Action和Dao、DaoImpl的,一般性用Spring的注解在xml中,Dao、DaoImpl是最后操作数据库的,如果你用ibatis的话,用Service、ServiceImpl调用Dao、DaoImpl,然后数据库的操作语句的调用写在Dao、DaoImpl,最后真正数据库操作语句写在相应的xml中。

配置web.xml,在节点之间添加下面代码,也就是Struts2的框架的过滤器

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
27
28
29
30
31
32
<filter>
<filter-name>login filter</filter-name>
<filter-class>com.ty.base.LoginFilter</filter-class>
<init-param>
<param-name>flag</param-name>
<param-value>operator</param-value>
</init-param>
<init-param>
<param-name>login</param-name>
<param-value>/login.jsp</param-value>
</init-param>
<init-param>
<param-name>excludes</param-name>
<param-value>/welcome.action,/logon.action,/Login-executeJson.action,/authImg.html</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>login filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

配置过滤器是Struts2能跑起来最基本的前提,工作原理就是当tomcat容器启动时,首先加载web.xml,所以会加载其中定义的过滤器,因此StrutsPrepareAndExecuteFilter过滤器会过滤项目下所有的请求,然后后来利用过滤器捕获action请求,从而调用相应的方法进行处理,这就是Struts2的大致工作情况,StrutsPrepareAndExecuteFilter类出现可以让开发人员自定义过滤器,从而在请求到达处理之间对用户请求进行处理

配置好web.xml后需要建立Struts2的核心配置文件,位置就是项目下的src目录中,建立struts.xml文件,他负责配置所有的请求对应各种类或者方法,所以是核心配置文件,基本的结构如下:

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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
<constant name="struts.custom.i18n.resources" value="phMessage" />
<constant name="struts.devMode" value="false" />
<!-- <constant name="struts.i18n.encoding" value="GB18030" /> -->
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.multipart.maxSize" value="50000000"/>
<include file="jspAction.xml"/>
<include file="jsonAction.xml"/>
<include file="mobileAction.xml"/>

<package name="main" namespace="/" extends="struts-default">
<action name="welcome" class="com.ty.login.LoginAction" method="welcome">
<result name="success">/login.jsp</result>
</action>

<action name="login" class="com.ty.login.LoginAction">
<result name="success">/page/index.jsp</result>
<result name="input">/page/login/login.jsp</result>
<result name="repass">/loginuppassword.jsp</result>
</action>
</package>
</struts>

在这里,一个action就负责处理一个请求,packge我们使用的默认包,当有多个packge时,name一定要区分开,namespace就是访问的命名空间,如果项目名是LYL,如果命名空间是/test那么应该访问,http://localhost:8080/LYL/test/自定义的action

  第一个action对应的访问路径就是http://localhost:8080/LYL/welcome.action当然默认也可以不加action

  第二个action对应的就是http://localhost:8080/LYL/login.action

  然后去建立一个Action类,就是LYL,类名命名必须是以Action结尾的驼峰命名,并且继承于ActionSupport类,具体代码如下:

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
27
28
29
package net.zengzhiying.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private static final long serialVersionUID = 1L;

@Override
public String execute() throws Exception {
System.out.println("执行Action");

return SUCCESS;
}

public String welcome() {
log.debug("welcome new user ");
center_name = "请输入店面编号";
userName = "请输入登录账号";
password = "请输入登录密码";
return SUCCESS;
}

//新增自定义方法
public String login() {
return SUCCESS;
}

}

如果前面配置文件没指定method属性,默认访问的方法就是execute方法。

五、AJAX技术

参考菜鸟教程:https://www.runoob.com/ajax/ajax-tutorial.html

Asynchronous JavaScript and XML 异步的JavaScript和XML。

它不是一个新的编程语言,只是使用现有标准的新方法。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

包含的技术包括:

使用CSS和XHTML来进行展示
使用DOM模型来交互和动态显示
使用XMLHttpRequest来和服务器进行异步通信
使用JavaScript来绑定和调用
它的核心技术就是 XMLHttpRequest 。不同的浏览器创建XMLHttpRequest是有差别的,IE浏览器使用ActiveXObject ,而其他浏览器使用的是 XMLHttpRequest 的JavaScript内置对象

Ajax编程步骤:

  1. 创建XMLHttpRequest对象
  2. 设置请求方式
  3. 调用回调函数
  4. 发送请求

jQuery的Ajax操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.ajax({
url:请求地址,
type:"get|put|post|delete"(默认是get),
data:请求参数(key:"value"),
dataType:请求数据类型"html|text|json|xml|script|jsonp",
success:function(data,dataTextStatus,jqxhr){}, //请求成功的回调函数
error:function(jqxhr,textStatus,error){} //请求失败的回调函数
})

//简单的写法(以Post方式为例)
$.post("url",{请求参数},function(){
//回调函数
},"JSON");

六、Session和Cookie

七、SQL Server

开发环境:

web.xml:web的核心配置文件,servlet、filter、listener资源都会在这里进行配置

部署环境:jdk1.8+tomcat7.0+structs2.1