您的位置 首页 java

java程序员的基础知识篇,回顾ssh

本文是上一篇文章的后续文,具体请回顾上文

二十一、Ssh的概述:

ssh是web开发中常见的一种框架

s-struts

s-spring

h-hibernate

其中struts在框架中充当控制器,实现MVC,主要用来处理用户的请求,和跳转页面。使项目结构清晰,开发者只需要关注业务逻辑的实现即可。

spring在ssh充当粘合剂,粘合struts-sping-hibernate,主要用来进行事物的控制,

hibernate-充当数据库持久层,主要用它来与数据库交互,提高开发效率,减轻程序员sql控制要求,而且hibernate通过反射机制,有灵活的映射性,还支持各种关系,一对一,一对多,多对多。

在进行ssh整合的时候,我们应该注意:

1. Action继承于ActionSupport

引入struts-spring-plugin.jar包,从而完成struts和spring的整合

在struts2的action中注入service,保证service的名字和配置文件中的一致,并生成get,set方法

Dao层继承于hibernateDaoSupport

在dao层的配置文件中注入sessionFactory

二十二、防止表单重复提交

针对于重复提交的整体解决方案:

1.用redirect来解决重复提交的问题

2.点击一次之后,按钮失效

3.通过loading

4.自定义重复提交过滤器

5.解决struts2重复提交

可以结合s:token标签来解决重复提交问题

利用token的原理:

1.在前端的jsp页面中加入s:token标签,在访问该页面时就会生成

隐藏域,该隐藏域中包含一个随机生成的字符串,并把该字符串

存入session中

2.在struts2的配置文件中加入token拦截器后,当正常访问action

的时候,会从session中取出该字符串,然后和页面隐藏域中提交

字符串做对比,如果一致则正常执行并删除session中存储的字符串。

二十三、JSP标签:

1.JSP include动作

jsp:include 动作

以“<jsp: 动作名 ” 开始,以“</jsp:动作名> ” 结束

比如:<jsp:include page=” Filename” />

2.JSP指令:<%@ include%><%@ %>

以“<%@ ” 开始,以“%> ” 结束。比如:

<%@ include file = ” Filename” %>

3.JSP输出表达式:<%= %><%=Java表达式 %>

输出变量的值,后边不能加<%= ; %>

4.JSP Scriptlet【脚本】:<% ;%> <% Java 代码 %>

例子:

<% Calendar now = Calendar.getInstance(); %>

5.JSP声明:<%! %> <%! 函数或者方法 %>

例子:

<%!

String getHello(String name) {

return “Hi,” + name + “!”;

}

%>

6.迭代标签:<c:foreach>

Jstl中的核心标签(core)

7.JSP注释:

<!– 这是注释,但客户端可以查看到 –>

<%– 这也是注释,但客户端不能查看到 –%>

8.el表达式:${}

9.jsp:include动作是在运行时动态包含。

@include指令是在编译时包含。

它们两个都只能包含本项目的相关文件,不能包含其他项目的。

如果要包含其他项目的文件可以使用c:import

二十四、过滤器

filter的概述:

filter是一个过滤器,用来在请求前和响应后进行数据的处理。

filter的生命周期是:

实例化—>初始化(init)–>进行过滤(doFilter)—>销毁(destroy)–>释放资源

一个Filter必须实现javax.servlet.Filter接口

在项目中我们通常通过filter进行编码转换,

进行安全验证,进行重复提交的判断。

了解(不需要主动说)

filter 相当于 拦截器 相当于Spring AOP

servlet+jsp+javabean+jdbc+filter

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.leopard.filter.EncodingFilter</filter-class>

<init-param>

<param-name>encode</param-name>

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>*</url-pattern>

</filter-mapping>

二十五、拦截器的理解

什么是拦截器:

拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用

正如上面 Struts2的Reference中讲述的,Struts2的Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦截器的代码。

在项目中,我们经常用来拦截通过非正常程序而进行的访问

Struts2的拦截器和Servlet过滤器类似。在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法。

其中intercept方法是拦截器的核心方法,所有安装的拦截器都会调用之个方法。在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timer、params等。如果在<package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。代码如下:

<package name=”demo” extends=”struts-default” > … </package>

拦截器是Struts2框架的核心,它主要完成解析请求参数、将请求参数赋值给Action属性、执行数据校验、文件上传等工作

在struts-default.xml中有一个默认的引用,在默认情况下(也就是<action>中未引用拦截器时)会自动引用一些拦截器。struts2中默认的拦截器是defaultStack.

自定义拦截器需要特别注意的是不要忘记引入struts2默认的拦截器。为了实现某些操作,我们可以自定义拦截器,

自定义拦截器有三种方式定义。分别为实现Interceptor接口,继承抽象类AbstractInterceptor,继承MethodFilterInteceptor类。

拦截器在项目中的运用:

同时可以减轻代码冗余,提高重用率。

如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。

二十六、Spring融入框架

我们通过在web.xml中配置ContextLoaderListener这个监听器也加载

spring的配置文件,从而融入到项目框架中。

二十七、项目的部署方式

1、如果项目单独部署到tomcat中的时候,应该看tomcat中的server.xml;

2、如果和eclipse结合使用进行项目部署的时候,应该看eclipse里面的server.xml.

本文为下一篇文章的前篇,下一篇是——–数据库篇,详情请关注

文章来源:智云一二三科技

文章标题:java程序员的基础知识篇,回顾ssh

文章地址:https://www.zhihuclub.com/183984.shtml

关于作者: 智云科技

热门文章

网站地图