• Java学习,使用IDEA中碰见的问题(一)


    前言:本篇幅主要以初学者用作在使用IDEA学习Java的过程中记录一下不熟悉的部分,以及经常出现的问题

    一、IDEA中配置Struts2.5.14.1,Jar包资源未生成到Out目录

    学习到Struts2,建Demo,直接打开IDEA,创建了一个Web项目,使用了Struts2,结果配置好后一直提示 ClassNotFound "org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter"

    前提:使用的Struts2 版本号为 2.5.14.1,本身web.xml配置文件中就要使用 "org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter",这个是从2.5开始就不一样了,具体可以看看jar包里面的命名空间,都没有"org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter",版本从2.5之后就简化了,少了“.ng”。

    最后发现是因为Out目录中没有将Jar包输出,编译后的class文件,自然找不到对应的Jar包,所以设置一下就可以 了,Ctrl+Shift+Alt+S ,快捷键打开“Project Structure”,“Artifacts”选项,右下角应该有一个“Fix”按钮,修复一下就OK了。

     

    二、IDEA中配置Struts2.5.14.1(2-2.5)通配符动态调用失败 错误代码404

     在Action中存在多个方法时,为了配置不那么臃肿,有了通配符动态调用方法,按照基本通配符配置原则,基本版本如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <!DOCTYPE struts PUBLIC
     4         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
     5         "http://struts.apache.org/dtds/struts-2.5.dtd">
     6 
     7 <struts>
     8     <package name="struts2" namespace="/TestStruts" extends="struts-default">
     9         <action name="TestStruts_*" class="com.jsonyang.struts2.TestStrutsAction" method="{1}">
    10             <result name="success">/index2.jsp</result>
    11         </action>
    12     </package>
    13 </struts>

    直接访问地址,会出现404,这是因为2.3版本之后,加强了安全配置,避免不想被调用的方法也暴露在外部,所以需要指定一个调用范围

    方式一  

    为每个<action>配置<allowed-methods/>,注意顺序,应该放在result标签元素之后

     1 <allowed-methods>SayHello,SayHai</allowed-methods> 

    方式二

    <package>下添加全局方法范围<global-allowed-methods/>

     1 <global-allowed-methods>SayHello,SayHai</global-allowed-methods> 

     三、IDEA中Web项目的注意事项

    ①如果添加了类似于Struts、hibernate,xml配置文件,最好是放在src路径下,hibernate中的Mapping-->resource属性可以使用相对路径

    ②重命名文件,Shift + F6

    ③hibernate类文件映射文件配置中,class-->name属性,必须是类文件的相对路径,这样才能找到类文件

    ④Struts2.5.14.1、Hibernate5.4、JDK10 可以匹配兼容,Hibernate5.4是最新的开发版本,兼容到JDK11

    文件目录结构

    ⑤Hibernate中使用 Hql 查询语句的时候 ,Select * From  TableName(不是要写真正的数据表名,而是Mapping后的表对应的类名),和 .net 中的Linq 有点异曲同工之妙

    ⑥JSP+Struts 使用时,一般使用EL标签 ${}访问Action中的变量,还有一种Struts自带标签可以使用,需要提前引入Struts标签

    <%@ taglib prefix="s" uri="/struts-tags"%>
     1 <s:iterator value="#request.list" var="fr">
     2         <s:if test="#fr.mk=='wh'">
     3     <tr>
     4             <td align="center"><s:property value="#fr.zfBh"/></td>
     5             <td align="center"><s:property value="#fr.xm"/></td>
     6             <td align="center"><s:property value="#fr.szjq"/></td>
     7             <td align="center"><s:property value="#fr.zt"/></td>
     8     </tr>
     9         </s:if>
    10 </s:iterator>

     

  • 相关阅读:
    ~是什么意思 在C语言中,~0代表什么
    window中普通用户无法登录远程桌面
    服务器22端口被封锁的问题解决
    让hive的表注释和字段注释支持中文
    MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not provided by any .service files的错误
    记使用talend从oracle抽取数据时,数字变为0的问题
    记mysql中时间相关的一个奇怪问题
    使用dbeaver查mysql的表会导致锁表的问题
    oracle中实现某个用户truncate 其它用户下的表
    Oracle中找出用户的上次登录时间
  • 原文地址:https://www.cnblogs.com/JsonYang/p/9994079.html
Copyright © 2020-2023  润新知