〇、项目中使用到的具体技术:
- jsp
- Servlet
- Tomcat
- structs2
- Ajax
- Session和Cookie
- 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="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编程步骤:
- 创建XMLHttpRequest对象
- 设置请求方式
- 调用回调函数
- 发送请求
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("url",{请求参数},function(){ },"JSON");
|
六、Session和Cookie
七、SQL Server
开发环境:
web.xml:web的核心配置文件,servlet、filter、listener资源都会在这里进行配置
部署环境:jdk1.8+tomcat7.0+structs2.1