GVKun编程网logo

使用idea搭建SSH(idea搭建ssh项目)

15

以上就是给各位分享使用idea搭建SSH,其中也会对idea搭建ssh项目进行解释,同时本文还将给你拓展1.intellijidea搭建springboot项目、Idea搭建SSH架构、Idea搭建s

以上就是给各位分享使用idea搭建SSH,其中也会对idea搭建ssh项目进行解释,同时本文还将给你拓展1. intellij idea搭建spring boot项目、Idea 搭建SSH 架构、Idea搭建servlet开发过程、IDEA搭建spring 5.1.x源码环境等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

使用idea搭建SSH(idea搭建ssh项目)

使用idea搭建SSH(idea搭建ssh项目)

一、新建项目

  1. 选中Spring

     

     

  2. strust2

     

  3. hibernate

     

二、见项目根路径下的lib下的jar移动到WEB-INF下

  1. 移动

     

  2. 修改路径


  3. 在lib目录下导入【c3p0-0.9.5.2.jar】、【mysql-connector-java-5.1.7-bin.jar】并加载到项目



     

     

三、配置文件

  1. web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <!--配置spring整合web侦听器-->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔 此参数用于后面的Spring ContextLoader -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/applicationContext-*.xml</param-value>
        </context-param>
        <!--配置延时加载-->
        <filter>
            <filter-name>openSessionInViewFilter</filter-name>
            <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>openSessionInViewFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!--配置struts核心过滤器-->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    </web-app>
    web.xml
  2. jdbc.properties
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.validationQuery=SELECT 1
    jdbc.url=jdbc:mysql://localhost:3306/stu_return_late?useUnicode=true&characterEncoding=UTF-8
    jdbc.username=root
    jdbc.password=123456
    
    
    hibernate.hbm2ddl.auto=update
    hibernate.show_sql=true
    hibernate.format_sql=true
    jdbc.properties

     

  3. log4j.properties
    # This is the configuring for logging displayed in the Application Server
    log4j.rootLogger=INFO, stdout,file
    log4j.addivity.org.apache=true
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern= %p [%d] %c{1}.%M(%L) | %m%n
    
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=D:\\logs\\test.log
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
    
    log4j.logger.org.acegisecurity.context=DEBUG
    log4j.logger.org.apache.commons=ERROR
    log4j.logger.org.springframework=INFO
    log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
    log4j.logger.org.hibernate=WARN
    log4j.logger.org.hibernate.SQL=ERROR
    log4j.logger.org.hibernate.type=ERROR
    
    ##############################################
    
    handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler    
    
    ############################################################
    # Handler specific properties.
    # Describes specific configuration info for Handlers.
    ############################################################
    
    #org.apache.juli.FileHandler.level = FINE
    #org.apache.juli.FileHandler.directory = ../logs/
    #org.apache.juli.FileHandler.prefix = error-debug.
    #
    #java.util.logging.ConsoleHandler.level = FINE
    #java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
    log4j.properties

     

  4. spring
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.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">
    
        <!--数据库连接池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClassName}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!-- 每300秒检查所有连接池中的空闲连接 -->
            <property name="idleConnectionTestPeriod" value="300"></property>
            <!-- 最大空闲时间,900秒内未使用则连接被丢弃。若为0则永不丢弃 -->
            <property name="maxIdleTime" value="900"></property>
            <!-- 最大连接数 -->
            <property name="maxPoolSize" value="40"></property>
            <property name="minPoolSize" value="1"></property>
            <property name="initialPoolSize" value="1"></property>
        </bean>
    
        <!--sessionFactory-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 注入连接池,包含了数据库用户名,密码等等信息 -->
            <property name="dataSource" ref="dataSource"/>
            <!--扫描组件进spring容器-->
            <property name="packagesToScan" value="com.stureturnlate.moudels.sys.vo" />
            <!-- 配置Hibernate的其他的属性 -->
            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                    <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                    <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
                    <prop key="hibernate.connection.url">jdbc:mysql://localhost:3306/stu_return_late</prop>
                    <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
                </props>
            </property>
        </bean>
    
        <!-- 使用hibernateTemplate -->
        <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
    <!-- 配置事务 -->
        <!-- 事务管理器 -->
        <bean id="txManager"
              class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory" />
        </bean>
    
        <!-- 开启通过注解@Transactional管理事务 -->
        <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />
    
        <!-- 事务 -->
        <tx:advice id="txAdvice" transaction-manager="txManager">
            <tx:attributes>
                <tx:method name="query*" read-only="true" propagation="REQUIRED" />
                <tx:method name="find*" read-only="true" propagation="REQUIRED" />
                <tx:method name="select*" read-only="true" propagation="REQUIRED" />
                <tx:method name="*" propagation="REQUIRED" />
            </tx:attributes>
        </tx:advice>
    
        <!-- 配置AOP -->
        <aop:config proxy-target-class="true">
            <aop:pointcut expression="execution(* *..service..*Service*.*(..))" id="serviceMethod" />
            <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
        </aop:config>
    </beans>
    applicationContext-hibernate.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
        <!-- 引入外部属性文件 -->
        <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:jdbc.properties</value>
                </list>
            </property>
        </bean>
    
    </beans>
    applicationContext-resource.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
    ">
        <task:annotation-driven/>
         <!--自动扫描(DAO) -->
        <context:component-scan base-package="com.stureturnlate.moudels.sys.dao"/>
        <!-- 自动扫描(Service) -->
        <context:component-scan base-package=" com.stureturnlate.moudels.sys.service"/>
        <!-- 自动扫描(Quartz) -->
        <!--<context:component-scan base-package="com.stureturnlate.moudels.sys.quartz"/>-->
    </beans>
    applicationContext-service.xml

     

  5. strust
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
    <!--suppress ALL -->
    <struts>
    
        <!-- 将Action交给spring容器管理 -->
        <constant name="struts.objectFactory" value="spring" />
    
        <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
        <!-- 设置为简单样式 -->
        <constant name="struts.ui.theme" value="simple"></constant>
        <!-- 零配置 -->
        <!--<constant name="struts.convention.package.locators" value="shi" />-->
        <constant name="struts.convention.package.locators.basePackage" value="com" />
    
    
        <!-- 字符集编码 -->
        <constant name="struts.i18n.encoding" value="utf-8" />
    
        <package name="defaultPackage" namespace="/" extends="struts-default">
    
        </package>
    
        <include file="strust/struts-sys.xml"/>
        <include file="strust/struts-biz.xml"/>
        <include file="strust/struts-app.xml"/>
    </struts>
    struts.xml

    struts-app.xml、struts-biz.xml、struts-sys.xml....

     

四、新建数据表,并反向映射实体类

  1. 建好数据库表

     

  2. 打开Persistence选项:ViewTool WindowsPersistence

     

  3. 在hibernateGen上右键,进行如下操作

     

  4. 生成

     

  5. 结果

     

报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

  1. 原因:项目未引入【spring-web-5.1.5.RELEASE.jar】
  2. 解决办法:下载【spring-web-5.1.5.RELEASE.jar】

报错:Cannot resolve method ''getContextPath()

  1. 如图

     

  2. 原因:缺少了【javax.servlet-api-3.1.0.jar】和【jsp-api-2.0.jar】

     

配置AOP报错:Could not find bean with name ''org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor

  • 原因,缺少了包【aopalliance-1.0.jar】和【aspectjweaver-1.9.2.jar】

配置C3P0报错:Error creating bean with name ''dataSource''--Caused by: java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

  • 原因:使用c3p0时要导入两个包【c3p0-0.9.5.2.jar】和【mchange-commons-java-0.2.11.jar】

实体类外键映射报错:Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.stureturnlate.moudels.sys.vo.HostelEntity column: dorm_id (should be mapped with insert="false" update="false")

 

 

报错:Caused by: Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]

  1. 在Strust.xml配置了还在报错,缺少整合Struts和Spring的Jar

     

  2. 原因:少了【struts2-spring-plugin-2.5.20.jar】

 启动tomcat报错:java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

  1. 如图:

     

  2. 看看是不是少了这几个包【servlet-api-2.5.jar】和【jsp-api-2.1.jar】和【jstl-1.2.jar】

页面404:strust无法用通配符执行action的方法

  1. 原因:使用了新版本的strust2
  2. 解决办法:在strust2的配置文件中加入【strict-method-invocation="false"

     

项目中用到JSON,配置struts.xml时遇到json-default发红:Cannot resolve Struts Package ''json-default''

  1. 如图:

     

  2. 原因:缺少了【struts2-json-plugin-2.5.20.jar】

  3. 解决办法:
    一、项目导入包
    二、到Project Structure条件strust配置文件
    三、如下图:

 

SSH框架下Ajax与Action交互数据时报错:org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException

  • 根本原因是:是Hibernate的懒加载引起的。就是在传递的数据中有引用类型的数据采用了懒加载机制。

 

主键(int)查询报错:java.lang.IllegalArgumentException: org.hibernate.TypeMismatchException: Provided id of the wrong type for class com.stureturnlate.moudels.sys.vo.StudentEntity. Expected: class java.lang.String, got class java.lang.Integer

第一种可能:

  •  原因:实体类的hibernate映射文件没有指定字段属性的sql-type,导致查询的时候默认String

     

  • 解决办法:在生成实体类的时候这样子勾选:

第二种可能:

  • 使用了hibernate的get方法查询
    Session currentSession = sessionFactory.openSession();
    return currentSession.get(StudentEntity.class, 主键id);
    //return currentSession.load(StudentEntity.class, 主键id);--懒加载查询

     

  • 使用这种方法查询,查询条件必须为主键,且类型要与主键匹配

 

第三种可能:

  • 外键查询
  • 解决办法:(qbc查询)
    if (studentEntity.getUserId() != null) {
    
                Criteria cr=currentSession.createCriteria(StudentEntity.class);//userId为student外键,为sysUser主键
    //            cr.add(Restrictions.eq("sysUser.userId", studentEntity.getUserId()));//是外键的直接用,没问题
                cr.add(Restrictions.eq("userId", studentEntity.getUserId()));//是外键的直接用,没问题
                //cr.add(Restrictions.eq("sysUser.userName", "aaa"));//报错
    //            cr.createAlias("sysUser", "sysUser").add(Restrictions.eq("sysUser.userName", "黄结"));//不是外键的定义别名,不会报错
    
                list = cr.list();
    //            return (StudentEntity) cr.list().get(0);
            } else {
    
                CriteriaBuilder criteriaBuilder = currentSession.getCriteriaBuilder();
    
                CriteriaQuery<StudentEntity> query = criteriaBuilder.createQuery(StudentEntity.class);
    
                Root<StudentEntity> root = query.from(StudentEntity.class);
    
                Predicate studentId = criteriaBuilder.equal(root.get("studentId"), studentEntity.getStudentId());
    
                query.where(studentId);
    
                list = currentSession.createQuery(query).list();
    
            }
            return list.size()>0&&list!=null?list.get(0):null;
    例子

     

 jsp页面向后台action绑定模型驱动Date类型的属性:No result defined for action com.stureturnlate.moudels.biz.action.student.StudentAction and result input

  • 原因:该实体类的Date属性使用了【java.sql.Date】
  • 解决办法:改为【java.util.Date】

1. intellij idea搭建spring boot项目

1. intellij idea搭建spring boot项目

1.选择Spring Initalizr,JDK选择1.8,点击下一步(如果使用eclipse创建项目请安装STS插件)

2.自己修改 Group 和 Artifact 字段名,点击下一步

  • Name:项目名称
  • Type:我们是Maven构建的,那么选择第一个Maven Project
  • Packaging:打包类型,打包成Jar文件
  • Java Version:jdk版本,选择1.8
  • Language:开发语言,选择Java
  • Group:对应pom文件中的groupId,项目组织的唯一标识,对应Java包的结构
  • Artifact:对应pom文件的artifactId,项目唯一标识,对应项目名称
  • Version:项目版本,对应pom文件的version
  • Description:项目描述,对应pom文件的description
  • Package:包名

3.只要勾选Web下的web就可以了,再选一下spring boot版本号,这里我选择2.0.3,点击下一步

4.填写项目名称,项目存放的目录,点击完成

5.删除无用文件

6.项目结构

Idea 搭建SSH 架构

Idea 搭建SSH 架构

 这几天在学习java web中的SSh架构,开始搭建时候遇到很多问题,经过几天的探索,记录一下SSH 的搭建

一.使用Idea创建新项目

1.选择Spring相关

clipboard.png

clipboard.png

2.struts2相关

clipboard.png

3.hibernate相关

clipboard.png

4.选择完成后next->finish

二.在项目web/WEB-INF目录下创建lib 和classe文件夹将相关的jar包导入项目
三.依赖jar包

clipboard.png
四调整项目依赖路径
clipboard.png

clipboard.png

clipboard.png
选择放jar包的lib文件夹

clipboard.png
点击OK

clipboard.png

clipboard.png

clipboard.png
然后apply->ok
四.配置tomcat

clipboard.png

clipboard.png

clipboard.png

clipboard.png
五.测试修改

报错1.运行项目报错,错误如下
21-Aug-2018 14:26:38.160 警告 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion Unknown version string [4.0]. Default version will be used.
21-Aug-2018 14:26:40.003 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
21-Aug-2018 14:26:40.023 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file
21-Aug-2018 14:26:40.023 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors
查看log日志

clipboard.png

Log中显示错误如下
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:512)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:493)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4591)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1739)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
这个错误是因为web.xml中的structs2 配置错误 

clipboard.png

修改配置为:
<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
运行项目
报错2:
 Unable to load configuration. - validator - file:///D:/Creator/java/tomcat8.5.23/bin/com/opensymphony/xwork2/validator/validators/default.xml:28:109
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
    at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:957)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:463)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:496)
    at org.apache.struts2.dispatcher.InitOperations.initDispatcher(InitOperations.java:73)
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:61)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4591)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5233)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1739)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: Unable to load validator class com.opensymphony.xwork2.validator.validators.RequiredFieldValidator - validator - file:///D:/Creator/java/tomcat8.5.23/bin/com/opensymphony/xwork2/validator/validators/default.xml:28:109
    at com.opensymphony.xwork2.validator.DefaultValidatorFileParser.parseValidatorDefinitions(DefaultValidatorFileParser.java:136)
    at com.opensymphony.xwork2.validator.DefaultValidatorFactory.retrieveValidatorConfiguration(DefaultValidatorFactory.java:194)
    at com.opensymphony.xwork2.validator.DefaultValidatorFactory.parseValidators(DefaultValidatorFactory.java:179)
    at com.opensymphony.xwork2.validator.DefaultValidatorFactory.init(DefaultValidatorFactory.java:62)
    at com.opensymphony.xwork2.inject.ContainerBuilder$8.call(ContainerBuilder.java:594)
    at com.opensymphony.xwork2.inject.ContainerBuilder$8.call(ContainerBuilder.java:590)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:560)
    at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:590)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:182)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
    ... 53 more
Caused by: java.lang.NullPointerException
    at com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:165)
    at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:177)
    at com.opensymphony.xwork2.factory.DefaultValidatorFactory.buildValidator(DefaultValidatorFactory.java:47)
    at com.opensymphony.xwork2.ObjectFactory.buildValidator(ObjectFactory.java:239)
    at com.opensymphony.xwork2.validator.DefaultValidatorFileParser.parseValidatorDefinitions(DefaultValidatorFileParser.java:133)
    ... 62 more

这里是需要添加一个xwork-coreXXX.jar的包然后在web.xml中配置 <listener>,配置如下

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config.xml</param-value>
    </context-param>

启动项目,启动成功,完成ssh的基本配置

Idea搭建servlet开发过程

Idea搭建servlet开发过程

 Idea搭建servlet开发过程

https://www.cnblogs.com/javabg/p/7976977.html

(1)    安装idea,jdk,tomcat;设置好环境变量;

(2)    新建项目工程new-project-java Enterprise-Web Application;

(3)    设置工程名称,也就是程序的根目录;

(4)    创建并设置生成输出目录;在WEB-INF 目录下点击右键,New --> Directory,创建 classes 和 lib 两个目录;File --> Project Structure...,进入 Project Structure窗口,点击 Modules --> 选中项目“JavaWeb” --> 切换到 Paths 选项卡 --> 勾选 “Use module compile output path”,将 “Output path” 和 “Test output path” 都改为之前创建的classes目录;点击 Modules --> 选中项目“JavaWeb” --> 切换到 Dependencies 选项卡 --> 点击右边的“+”,选择 “JARs or directories...”,选择创建的lib目录;

(5)    File --> Project Structure- Artifacts设置打包输出格式和路径;

(6)    Run -> Edit Configurations,进入“Run Configurations”窗口,点击"+"-> Tomcat Server -> Local;配置好tomcat服务器;点击server设置端口;点击deployment设置程序的Application context,这个是本工程的根目录。在浏览器中访问的时候,通过这个路径访问路径WebHello下的类名HelloWorld ,url为http://localhost:8080/WebHello/HelloWorld

(7)    新建Java文件,实现HttpServlet类,实现init接口和destroy接口,重写doGet方法。

import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

import java.io.IOException; 

import java.io.PrintWriter; 

 

public class HelloWorld extends HttpServlet { 

private String message; 

 

    @Override 

    public void init() throws ServletException { 

    message = "Hello world, this message is from servlet!"; 

    } 

 

    @Override 

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

        //设置响应内容类型 

    resp.setContentType("text/html"); 

 

        //设置逻辑实现 

    PrintWriter out = resp.getWriter(); 

    out.println("<h1>" + message + "</h1>"); 

    } 

 

    @Override 

    public void destroy() { 

    super.destroy(); 

    } 

(8)    配置web.xml文件,在其中添加名称

部署servlet

方法一:

    在WEB-INF目录下web.xml文件的<web-app>标签中添加如下内容:

 <servlet> 

    <servlet-name>HelloWorld</servlet-name> 

    <servlet-class>HelloWorld</servlet-class> 

</servlet>    

<servlet-mapping> 

    <servlet-name>HelloWorld</servlet-name>  根据名称在<servlet>找到servlet-class类HelloWorld

    <url-pattern>/HelloWorld</url-pattern>  //浏览器中输入这个

</servlet-mapping> 

在HelloWorld文件的类前面加上:@WebServlet("/HelloWorld")

(9)    编译运行程序,idea就会将程序部署到tomcat服务器;可以在浏览器中输入http://localhost:8080/HelloWorld

(10)浏览器发送请求,容器接收根据<url-pattern>找到<servlet-name>HelloWorld类名,再由HelloWorld类名找到<servlet-class>HelloWorld,调用接口返回响应。

 

 

 

 

自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;

(1)   个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;

(2)   大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。

(3)   股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;

下载地址:

1.0.3版本(修复大盘指数崩溃缺陷)下载地址:

链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h

更新链接:

https://www.cnblogs.com/bclshuai/p/10621613.html

IDEA搭建spring 5.1.x源码环境

IDEA搭建spring 5.1.x源码环境

1.安装gradle

spring源码是基于gradle构建的,所以首先安装gradle.

下载gradle,地址:https://www.jianshu.com/p/d93...

下载后,在环境变量Path加入bin目录路径

image.png

在命令行中输入gradle -v,有如下信息即OK

image.png

设置grade源为国内源:在.gradle目录下init.gradle文件中加入如下配置,没有init.gradle文件就创建一个

allprojects {
    repositories {
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public"
        }
    }
}

image.png

2.下载源码

A.spring framework源码

可以直接在github上下载

image.png

从github上下载可能比较慢,下面是网盘资源

链接:https://pan.baidu.com/s/1FpuR...
提取码:18id

B.下载aspectj

3.idea打开源码目录

设置gradel home为gradle的下载目录

image.png

确认ok后,gradle也使用了加速镜像了,还是遇到下载不下来下面的文件,虽然只有27m

Caused by: org.gradle.api.resources.ResourceException: Could not get resource ''https://repo.spring.io/plugins-release/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.2.71/kotlin-compiler-embeddable-1.2.71.jar''.

解决方法:

使用https://www.mvnjar.com/org.je... https://maven.aliyun.com/nexus/content/groups/public/org/jetbrains/kotlin/kotlin-compiler-embeddable/1.2.71/kotlin-compiler-embeddable-1.2.71.jar 下载,

然后将文件拷贝到.gradle目录下cachesmodules-2files-2.1org.jetbrains.kotlinkotlin-compiler-embeddable1.2.71 a79f934bfbc1c7e16638da3474feab351735f1c0目录下即可,a79f934bfbc1c7e16638da3474feab351735f1c0构建的时候生成的目录,然后重新sync

又遇到下面错误,网上查阅资料是我的idea版本太低,gradle版本太高,不匹配,所以降低gradle版本

Cause: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier

如下错误

Plugin [id: ''io.spring.dependency-management'', version: ''1.0.7.RELEASE'', apply: false] was not found

取消gradle离线工作模式

如下出现小蓝标说明加载成功
image.png

今天关于使用idea搭建SSHidea搭建ssh项目的分享就到这里,希望大家有所收获,若想了解更多关于1. intellij idea搭建spring boot项目、Idea 搭建SSH 架构、Idea搭建servlet开发过程、IDEA搭建spring 5.1.x源码环境等相关知识,可以在本站进行查询。

本文标签: