struts初步探索(一)
来源:互联网 发布:投资网络大电影的风险 编辑:程序博客网 时间:2024/06/07 05:56
1. 前言:struts作为一种框架,最主要的用处,就是大大 简化了
servlet带来的各种繁琐的跳转代码,同时作为一个完整的 框架,它还 很没必要的开发了很多 不必要的 东西,进化的 过滤器--拦截器,类型转化器,国际化,标签
2. 首先 导包------然后配置 web.xml(会有点点不同,根据struts.xml位置的不同)--3.然后就是 配置 struts.xml文件
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>config</param-name> <param-value> struts-default.xml, struts-plugin.xml, <span style="background-color: rgb(51, 255, 51);">struts.xml --这里 有点点不同, ../config/struts.xml</span> </param-value> 就是在 web-inf 下建一个文件夹 </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping></web-app>
<span style="background-color: rgb(51, 204, 0);">》》》》》》》》》》》》》》》》》》》》》》》》</span>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="def" namespace="/" extends="struts-default"><!-- 将拦截器配置进来 --><interceptors><interceptor name="checklogin" class="com.xt.utils.CheckLoginIntercepter"></interceptor><!-- 合为一个栈 --><interceptor-stack name="myStack"><interceptor-ref name="checklogin"></interceptor-ref><!-- Struts默认的 --><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><!-- 设置默认拦截器 --><default-interceptor-ref name="myStack"></default-interceptor-ref><action name="stuact_*" class="com.xt.action.StudentAction" method="{1}"><result name="input">/index.jsp</result></action><!-- 文件上传 fileuploadact_doUpload --><action name="fileuploadact_*" method="{1}" class="com.xt.action.FileUploadAction"><param name="savePath">/upload</param><interceptor-ref name="fileUpload"><param name="allowedTypes">image/jpeg,image/bmp,image/gif</param> 限制 类型上传,jsp的form里面 写 enctype=multipart/form-data </interceptor-ref><interceptor-ref name="myStack"></interceptor-ref><result name="input">/upload.jsp</result></action></package></struts>
4.对于 struts的国际化,我不觉得 以后会用到,这个还需要 配置文件,
5. xwork-conversion.propertites 是一个类型转化器,这个以后可能会 用到,适合于 在一个 text里面写上 很多类型的 傻逼,写一下流程,
1. 一个 装了很多 类型的 class ,一定要把 构造方法 全写上
2.一个 配置文件 com.entitys.UserInfo (类)=com.utils.userConver(转化器)
3. 写一个 转换器 class userConver extends StrutsTypeConverter{
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {UserInfo userinfo=new UserInfo();String[] av=arg1[0].split(","); 在 arg1 里面 是很多 的{(1,2),(2,22)}userinfo.setId(av[0]); 先 把第一 拆分成 数组,从 数组里面 取值,赋给 类 userinfo.setPwd(av[1]);return userinfo;}
5.但是在 jsp 这边 就是 说 <input name="userinfo" type="text" /></td></tr> 6. action 这边 就是 private userinfo userinfo
?????????????????
5. 拦截器的使用:
5-1: 首先 写一个 拦截器,
public class LogInterceptor extends AbstractInterceptor{
public String intercept(ActionInvocation ink) throws Exception { System.out.println("进来了"+i);// 首先获取 action 的名字String actionname=ink.getProxy().getActionName();String methodname=ink.getProxy().getMethod();String ipname=ServletActionContext.getRequest().getRemoteAddr();String nowtime=(new Date()).toLocaleString();// 获取 登录名字Map session=ink.getInvocationContext().getSession();System.out.println("进来了 ");String username=(String)session.get("uid");String contexts=actionname+"\t"+ipname+"\t";String paths=ServletActionContext.getRequest().getRealPath("/");this.writes(paths,contexts);i++; // 最后一句 就是说,调回 原来的 action , 你需要执行的 return ink.invoke();}public void writes(String path,String contexts) throws Exception{// 输出流 才可以写入数据 写入 一个文件 , 文件创建就是 new File(path.txt)FileOutputStream fout=new FileOutputStream(new File(path+"syslog.log"),true);fout.write(contexts.getBytes());// 必须是以 字节数组 写入fout.close();}
2. 你必须 在 xml 里面配置才行
<package name="def" namespace="/" extends="struts-default"><interceptors><interceptor name="checklogin" class="com.utils.LogInterceptor">
<param name="strattime">20</param> 可以给 拦截器 里面的 属性设置 值 <param name="endtime">21</param>
</interceptor><!-- 合为一个栈 --><interceptor-stack name="myStack"><interceptor-ref name="checklogin"></interceptor-ref><!-- Struts默认的 --><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><!-- 设置默认拦截器 --><default-interceptor-ref name="myStack"></default-interceptor-ref> <action name="test_*" method="{1}" class="com.actions.LogAction" > <result name="suc">/suc.jsp</result></action></package><package name="desf" namespace="/" extends="struts-default"> <!-- 这个包不会受影响 --> 写在 不是一个包就不会 受到影响,<action name="login" class="com.actions.UserAction" ><result name="suc">/index.jsp</result><result name="er">/er.jsp</result></action></package>
6.文件上传的 需要 写一个 编码方式的
form 里面 enctype=""
<action name="upload" class="com.action.uploadAction" > <interceptor-ref name="fileUpload"> 限制类型的 <param name="allowedTypes">image/jpeg,image/bmp</param> </interceptor-ref> <interceptor-ref name="default"></interceptor-ref> <param name=savePath">/uploads</param>文件夹 建在 webroot 下面 <result name="suc">/suc.jsp</result></action>action里面 就是 :public String execute(){
FileUtils.copyDirectory(upload,new File(this.getSavePath()));}
保存 路径 savepath
public String getSavePath() {
return ServletActionContext.getRequest().getRealPath(savePath)+"\\"+this.getUploadName();
}
》》》》》》》》》》暂时这些》》》》》》》》》》》》》》》》》》》》》》》》
- struts初步探索(一)
- GreenDao初步探索(一 )
- Solr初步探索(一)
- Dagger2(初步探索一)
- FlexboxLayout初步探索一
- Struts教程(一):搭建Struts环境,初步使用Struts
- [技术] struts初步 (一)
- Struts 2(初步)
- Dagger2(初步探索三)
- Solr初步探索(二)
- git版本控制管理的学习(一)——初步探索
- struts初步
- div+css初步探索(1)
- 软件探索(一)
- 数据探索(一)
- HyBrid探索(一)
- MVC初步(一)
- Collection(一)初步
- Windows安装和使用zookeeper
- Atitit.java expression fsm 表达式分词fsm引擎
- Java数据类型转换
- Java四种代码块
- 堆
- struts初步探索(一)
- 安卓开发:监听软键盘的显示与隐藏,并作出其他操作
- 哈夫曼树HuffmanTree
- Atitit.常用的gc算法
- 红黑树
- Atitit. null错误的设计 使用Optional来处理null
- 海量数据处理问题
- 树之赫夫曼树
- sss