eclipse 下搭建 ssh 开发环境

一、Struts2Spring整合,创建一个OA工程
1、整合struts2
1)导入strut2jar:commons-logging-1.0.4.jar,freemarker-2.3.8.jar,ognl-2.6.11.jar,struts2-core-2.0.12.jar,xwork-2.06.jar。暂时导入这些jar包,到时候需要再倒入。
2)struts.xml文件放置在OA工程的src目录下。
3)web.xml里面配置struts2用到的核心过滤器。

Xml代码 

<filter> 

   <filter-name>struts2</filter-name> 

   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 

</filter> 

<filter-mapping> 

   <filter-name>struts2</filter-name> 

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

</filter-mapping> 

2、整合spring
1)导入springjar:spring.jar
2)
applicationContext.xml文件放置在OA工程的WEB-INF目录下。
3)web.xml里面配置spring用到的监听器。

Xml代码 

<listener> 

   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

</listener> 


4)添加struts2-spring整合的插件:struts2-spring-plugin-2.0.12.jar,如果不使用这个插件,则需要在struts.xml里面配置:

Xml代码 

<constant name="struts.objectFactory"value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> 


3、测试struts2spring整合对不对?
写一个jsp页面login.jsp来测试:

Html代码 

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 

<%@ taglib prefix="s" uri="/struts-tags"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 

<html> 

<head>  

<meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> 

<title>Insert title here</title> 

</head> 

<body> 

    <s:formaction="Login" method="post"> 

        <s:textfieldname="userName"label="userName"></s:textfield> 

        <s:passwordname="password"label="password"></s:password> 

        <s:submitlabel="submit"></s:submit> 

    </s:form> 

</body> 

</html> 

写一个LoginAction

Java代码 

package com.struts2.action; 

 

import com.opensymphony.xwork2.ActionSupport; 

import com.struts2.service.LoginService; 

public class LoginAction extends ActionSupport { 

    private LoginServiceloginService; 

    private StringuserName; 

    private Stringpassword; 

    public voidsetLoginService(LoginService loginService) { 

        this.loginService =loginService; 

    } 

    public StringgetUserName() { 

        return userName; 

    } 

    public voidsetUserName(String userName) { 

        this.userName =userName; 

    } 

    public StringgetPassword() { 

        return password; 

    } 

    public voidsetPassword(String password) { 

        this.password =password; 

    } 

    @Override 

    public String execute()throws Exception { 

       if(loginService.isLogin(userName, password)) 

            return SUCCESS; 

        else 

            return INPUT; 

    } 

写一个Service

Java代码 

package com.struts2.service; 

 

public interface LoginService { 

    boolean isLogin(StringuserName,String password); 


写一个Service的实现

Java代码 

package com.struts2.service.impl; 

 

import com.struts2.service.LoginService; 

public class LoginServiceImpl implements LoginService { 

 

    public booleanisLogin(String userName, String password) { 

       if("hello".equals(userName) &&"world".equals(password)) 

            return true; 

        else  

            return false; 

    } 

struts.xml里面配置:

Xml代码 

<package name="struts2"extends="struts-default"> 

    <actionname="Login" class="loginAction"> 

        <resultname="success">/result.jsp</result> 

        <resultname="input">/login.jsp</result> 

    </action> 

</package> 

applicationContext.xml里面配置:

Xml代码 

<bean id="loginService"class="com.struts2.service.impl.LoginServiceImpl"></bean> 

<bean id="loginAction" class="com.struts2.action.LoginAction"scope="prototype"> 

    <propertyname="loginService"ref="loginService"></property> 

</bean> 

启动tomcat,分别输入helloworld,提交,结果为helloworld说明struts2spring整合成功。

 

 

Struts+Spring整合实现,接下来继续整合Hibernate

前面已经讲述了Struts2+Spring整合,这里我们接着整合Hibernate
整合Hibernate
1)
导入Hibernate3.1jar:antlr-2.7.6.jar,commons-collections-3.1.jar,dom4j-1.6.1.jar,javassist-3.4.GA.jar,jta-1.1.jar,hibernate3.jar,slf4j-api-1.5.6.jar,slf4j-log4j12-1.5.6.jar,log4j-1.2.13.jar。暂时导入这些jar包,到时候需要再倒入。
2)spring的配置文件applicationContext-*.xml文件放置在OA工程的src目录下,这里我们有三个:
applicationContext-action.xml,applicationContext-beans.xml,applicationContext-common.xml
3)
web.xml里面配置

Xml代码 

<!-- when application server started,loading theapplicationContext-*.xml --> 

    <context-param> 

       <param-name>contextConfigLoaction</param-name> 

       <param-value>classpath*:applicationContext-*.xml</param-value> 

   </context-param> 

     

    <!-- integerate spring--> 

    <listener> 

   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

    </listener> 

     

    <!-- let spring managehibernate's session,that we can focus bussiness layer --> 

    <filter> 

       <filter-name>hibernateFilter</filter-name> 

        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> 

    </filter> 

   <filter-mapping> 

       <filter-name>hibernateFilter</filter-name> 

       <url-pattern>*.action</url-pattern> 

   </filter-mapping> 

     

     <!-- configratestruts2 core filter --> 

    <filter> 

       <filter-name>struts2</filter-name> 

       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 

    </filter> 

   <filter-mapping> 

       <filter-name>struts2</filter-name> 

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

   </filter-mapping> 

     

    <!-- configurate webcharacter encoding --> 

    <filter> 

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

       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 

       <init-param> 

           <param-name>encoding</param-name> 

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

       </init-param> 

    </filter> 

     

   <filter-mapping> 

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

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

   </filter-mapping> 


4)spring里面有声明式事务,它对hibernate做了封装,在applicationContext-common.xml里面配置spring的声明式事务:

Xml代码 

<!-- configure sessionFactory --> 

    <beanid="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 

        <propertyname="configLocation"> 

           <value>classpath:hibernate.cfg.xml</value> 

        </property> 

    </bean> 

     

    <!-- configuretransaction manager--> 

    <beanid="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 

        <propertyname="sessionFactory"> 

            <refbean="sessionFactory"/> 

        </property> 

    </bean> 

     

    <!-- configure transaction'spropagational feature --> 

    <tx:adviceid="txAdvice"transaction-manager="transactionManager"> 

       <tx:attributes> 

            <tx:methodname="add*" propagation="REQUIRED"/> 

            <tx:methodname="delete*" propagation="REQUIRED"/> 

            <tx:methodname="modify*" propagation="REQUIRED"/> 

            <tx:methodname="*" read-only="true"/> 

       </tx:attributes> 

    </tx:advice> 

     

    <!-- configure whichclass's which method take part in transaction --> 

    <aop:config> 

        <aop:pointcutid="allManagerMethod" expression="execution(*com.struts2.server.*.*(..))"/> 

        <aop:advisorpointcut-ref="allManagerMethod"advice-ref="txAdvice"/> 

    </aop:config> 

用到了springaop,所以在applicationContext.xml配置文件中引入spring-aop.xsd。具体如下:

 

<beans

   xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xmlns:p="http://www.springframework.org/schema/p"

   xmlns:aop="http://www.springframework.org/schema/aop"

   xmlns:tx="http://www.springframework.org/schema/tx"

   xsi:schemaLocation="http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      http://www.springframework.org/schema/tx

       http://www.springframework.org/schema/tx/spring-tx.xsd

       http://www.springframework.org/schema/aop                       http://www.springframework.org/schema/aop/spring-aop.xsd">

5)
测试Struts2+Spring+Hibernate整合是否成功
第一步:测试Spring+Hibernate整合是否成功
写一个需要映射的值对象Person

Java代码 

package com.oa.model; 

/**

 * @author lukuijun@hanqinet.com

 * @hibernate.classtalbe="t_person"

 */ 

public class Person { 

    /**

     * @hibernate.idgenerator-class="native" 

     */ 

    private int id; 

    /**

     * @hibernate.property

     */ 

    private String name; 

    /**

     * @hibernate.property

     */ 

    private String sex; 

    /**

     * @hibernate.property

     */ 

    private Stringaddress; 

    /**

     * @hibernate.property

     */ 

    private String duty; 

    /**

     * @hibernate.property

     */ 

    private String phone; 

    /**

     * @hibernate.property

     */ 

    private Stringdescription; 

    public int getId() { 

        return id; 

    } 

    public void setId(int id){ 

        this.id = id; 

    } 

    public String getName(){ 

        return name; 

    } 

    public void setName(Stringname) { 

        this.name = name; 

    } 

    public String getSex(){ 

        return sex; 

    } 

    public void setSex(Stringsex) { 

        this.sex = sex; 

    } 

    public String getAddress(){ 

        return address; 

    } 

    public voidsetAddress(String address) { 

        this.address =address; 

    } 

    public String getDuty(){ 

        return duty; 

    } 

    public void setDuty(Stringduty) { 

        this.duty = duty; 

    } 

    public String getPhone(){ 

        return phone; 

    } 

    public voidsetPhone(String phone) { 

        this.phone =phone; 

    } 

    public StringgetDescription() { 

        returndescription; 

    } 

    public voidsetDescription(String description) { 

        this.description =description; 

    } 

运行ant生成Person.hbm.xml映射文件:

Xml代码 

<?xml version="1.0"encoding="UTF-8"?> 

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

 

<hibernate-mapping> 

  <classtable="t_person" name="com.oa.model.Person"> 

    <idaccess="field" name="id"> 

      <generatorclass="native"/> 

    </id> 

    <property name="name"access="field"/> 

    <propertyname="sex" access="field"/> 

    <propertyname="address" access="field"/> 

    <propertyname="duty" access="field"/> 

    <propertyname="phone" access="field"/> 

    <propertyname="description" access="field"/> 

  </class> 

</hibernate-mapping> 

运行ant生成hiberante.cfg.xml文件:

Xml代码 

<?xml version="1.0"encoding="UTF-8"?> 

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

 

<hibernate-configuration> 

  <session-factory> 

    <propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 

    <propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/oa</property> 

    <propertyname="hibernate.connection.username">root</property> 

    <propertyname="hibernate.connection.password">hanqinet</property> 

    <propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

    <property name="hibernate.show_sql">true</property> 

    <propertyname="hibernate.hbm2ddl.auto">update</property> 

    <mappingresource="com/oa/model/Person.hbm.xml"/> 

 </session-factory> 

</hibernate-configuration> 

接着启动Tomcat,启动完毕检查数据库里面新增加了表t_personSpring2+Hibernate整合成功
第二步:测试Struts2+Spring整合是否成功
参考一、Struts2+Spring整合,测试成功
完成这个两步成功,说明我们的框架整合成功!

 

展开阅读全文

150讲轻松搞定Python网络爬虫

05-16
【为什么学爬虫?】        1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!        2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。   从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值