当前位置: 首页 > news >正文

泰安千橙网站建设优化熊掌号住建局官网网站

泰安千橙网站建设优化熊掌号,住建局官网网站,wordpress搬迁后多媒体库无法,小工厂怎么做网站访问Servlet APIAction搜索顺序动态方法调用指定多个配置文件默认ActionStruts 后缀接收参数处理结果类型1.访问Servlet API 首先我们了解什么是Servlet API httpRequest、httpResponse、servletContext  3个api对应jsp面向对象#xff1a;request、response、application …访问Servlet APIAction搜索顺序动态方法调用指定多个配置文件默认ActionStruts 后缀接收参数处理结果类型1.访问Servlet API    首先我们了解什么是Servlet API    httpRequest、httpResponse、servletContext  3个api对应jsp面向对象request、response、application  servlet中可以直接调用servlet api   struts2 Action中execute没有任何参数也就是不存在servlet api     Struts2框架底层是基本Servlet的所以我们肯定要去访问Servlet API而且开发Web应用不去访问Servlet API也是不可能的 所以我们Struts2框架提供了我们去访问Servlet API的方法;             struts2 提供了3种方式访问servlet api           ①:使用ServletActionContext访问Servlet API    ActionContext类       ②:使用ActionContext访问ServletAPI              ServletActionCotext类    ③:使用一些接口 如 ServletRequestAwa...;          实现***Aware接口    2.Action搜索顺序   我们来看一个路径 我们这里新建一个student.action 没有命名空间那么我们访问的路径就是 http://localhost:8080/ProjectName(项目的名字)/student.action 那么我们改成下面的路径  http://localhost:8080/ProjectName(项目的名字)/path1/path2/path3/student.action  在浏览器中访问也能访问到正确的页面   因此我们可以看出访问的顺序是从文件的上级 也就是最后一级包开始找  http://localhost:8080/ProjectName(项目的名字)/path1/path2/path3/student.action  http://localhost:8080/ProjectName(项目的名字)/path1/path2/student.action  http://localhost:8080/ProjectName(项目的名字)/path1/student.action  http://localhost:8080/ProjectName(项目的名字)/student.action  从path3 一直到path1都找不到 最后在根目录下找到  如果找不到就会报错了     这就是action的搜索顺序 3.动态方法调用    在.net MVC中 我们在Controller中创建一个一个方法  只要在页面中指定相应的mvc路径  我们视图的一个url就能请求得到 在struts中 我们则需要手工进行配置  指定页面和后台方法的匹配   这里的动态方法调用就是为了解决一个Action对应多个请求得处理。以免Action太多像指定method属性的配置方式     动态调用有三种方式  这里指定method属性和感叹号方式(不推荐使用)不再说明   我们来说下常用的通配符方式 首先在struts.xml配置我们的参数 ?xml version1.0 encodingUTF-8? !DOCTYPE struts PUBLIC -//Apache Software Foundation//DTD Struts Configuration 2.0//EN http://struts.apache.org/dtds/struts-2.0.dtd strutspackage namedefault namespace/ extendsstruts-defaultaction nameHelloWorld2 classcom.HelloWorldActionresult/result.jsp/result/action!-- name 代表我们的action名也就是url里面的名字 class是指定我们的后台类文件method {1} 与name中的*对应--action namehelloworld_* method{1} classcom.HelloWorldActionresult /result.jsp/resultresult nameadd /add.jsp/resultresult nameupdate /update.jsp/result/action/package /struts View Code 这里我们需要创建三个jsp文件  默认路径的result.jsp   还有add方法的add.jsp   update方法的update.jsp     页面里面我们都用一句话简单区分  这样 启动Debug as Server 然后在浏览器中访问就可以对应到相应的路径了   这里struts.xml文件result标签值都改成{1}.jsp  一样的道理    这里可以随意加参数进行配置 4.指定多个配置文件  如果项目比较大 则需要比较多的配置  我们在入门二文件中看到注释可以用include来包含多个配置文件 include file***.xml /include constant namestruts.i18n.encoding valueUTF-8 /constant ps: 1.被include的标签一定要符合struts的dtd规范。也就是说被include的xml文件的内部格式要符合struts的xml文件规范(跟struts.xml一摸一样)。 2.xml文件的编码格式要相同如果是utf-8那么都是utf-8。 5.默认Action    默认action是为了改善用户体验当用户输入的URL找不到对应的action,就会使用默认Action     【找不到默认action的原因和解决方法】 default-action-ref nameindex/default-action-refaction nameindexresult/error.jsp/result/action braction namelog_* method{1} classcom.wayne.action.LoginActionresult namelogin/login.jsp/resultresult namelogout/logout.jsp/result/action   将上面代码放到package标签中 这里定义了一个index的默认标签   通配符会覆盖掉默认action所以不能有【*_*】这样子的action要改成【log_*_*】这类型的命名否则【*_*】里面的第一个*就包括了所有的字符直接进入了这个action进行处理无法进入默认的action了。  6.Struts 后缀    三种方式 1.struts.properties中struts.action.extensionaction,do,struts2 2.struts.xml中增加常量constant constant namestruts.action.extension valueaction,do,struts2/constant 3.在web.xml过滤器中配置intt-param参数 init-paramparam-namestruts.action.extension/param-nameparam-valuedo,action,strtus2/param-value /init-param  7.接收参数    之前我们说到struts项目中  我们写了前台jsp页面  写了后台action页面  那么要想两者进行关联就需要在配置文件中配置关联关系真是麻烦。 下面我们用项目示例来说明下接收参数问题     首先我们建立一个login.jsp页面 1 % page languagejava contentTypetext/html; charsetutf-82 pageEncodingutf-8%3 !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd4 html5 head6 meta http-equivContent-Type contenttext/html; charsetutf-87 titleInsert title here/title8 /head9 body 10 form actionLoginAction.action methodpost 11 用户名input typetext nameusername / 12 密码input typepassword namepassword / 13 input typesubmit value提交/ 14 /form 15 /body 16 /html View Code  然后我们创建一个后台Class   LoginAction.java package com;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {public String login(){return SUCCESS;} } View Code   然后我们在struts.xml配置文件中配置 ?xml version1.0 encodingUTF-8? !DOCTYPE struts PUBLIC -//Apache Software Foundation//DTD Struts Configuration 2.0//EN http://struts.apache.org/dtds/struts-2.0.dtd strutspackage namedefault namespace/ extendsstruts-defaultaction nameHelloWorld2 classcom.HelloWorldActionresult/result.jsp/result/actionaction nameLoginAction methodlogin classcom.LoginActionresult /success.jsp/result /action/package /struts View Code   这里添加了一个过滤器 指定了访问LoginAction的login方法  然后我们如何通过action的属性获取form提交的值 第一种方式直接在action类中实现--使用Action的属性接收参数不利于面向对象 1 package com;2 3 import com.opensymphony.xwork2.ActionSupport;4 5 public class LoginAction extends ActionSupport {6 //创建两个属性的get set方法7 private String username;8 private String password;9 10 public String login(){ 11 System.out.println(username); 12 return SUCCESS; 13 } 14 15 public String getUsername() { 16 return username; 17 } 18 19 public void setUsername(String username) { 20 this.username username; 21 } 22 23 public String getPassword() { 24 return password; 25 } 26 27 public void setPassword(String password) { 28 this.password password; 29 } 30 31 32 } View Code   然后访问http://localhost:8080/StrutsDemo/login.jsp  输入用户名密码  提交   会发现控制台中打印输出了 用户名   第二种方式使用DomainModel接收参数   这里要把第一种属性声明的方式 单独放到一个类中去   建立一个User类    1 package com.po;2 3 public class User {4 //创建两个属性的get set方法5 private String username;6 private String password;7 8 public String getUsername() {9 return username; 10 } 11 12 public void setUsername(String username) { 13 this.username username; 14 } 15 16 public String getPassword() { 17 return password; 18 } 19 20 public void setPassword(String password) { 21 this.password password; 22 } 23 } View Code   然后action中去掉属性相关 声明一个user类 package com;import com.opensymphony.xwork2.ActionSupport; import com.po.User;public class LoginAction extends ActionSupport {public User getUser() {return user;}public void setUser(User user) {this.user user;}private User user;public String login(){System.out.println(user.getUsername());return SUCCESS;} } View Code     login.jsp页面中需要更改name的值 % page languagejava contentTypetext/html; charsetutf-8pageEncodingutf-8% !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd html head meta http-equivContent-Type contenttext/html; charsetutf-8 titleInsert title here/title /head bodyform actionLoginAction.action methodpost用户名input typetext nameuser.username /密码input typepassword nameuser.password /input typesubmit value提交//form /body /html View Code   然后再次启动下  访问http://localhost:8080/StrutsDemo/login.jsp  输入用户名密码  提交   会发现控制台中同样打印输出了 用户名 第三种方式使用ModelDriven接收参数(推荐方式) 这里我们需要实现ModelDriven接口   package com;import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.po.User;public class LoginAction extends ActionSupport implements ModelDrivenUser{private User usernew User(); //这里需要实例化 去掉了 get set方法 实现了ModelDriven的方法public String login(){System.out.println(user.getUsername());return SUCCESS;}Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;} } View Code   这里我们也不再需要指定jsp中的name 对象  去掉user. % page languagejava contentTypetext/html; charsetutf-8pageEncodingutf-8% !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd html head meta http-equivContent-Type contenttext/html; charsetutf-8 titleInsert title here/title /head bodyform actionLoginAction.action methodpost用户名input typetext nameusername /密码input typepassword namepassword /input typesubmit value提交//form /body /html View Code     如果我们传递一个List方式一样的道理  在jsp中 我们声明 书籍1input typetext nameBookList[0]/ 书籍2input typetext nameBookList[1]/   后台User类中我们创建List   BookList对象 private ListString BookList;public ListString getBookList() {return BookList;}public void setBookList(ListString bookList) {BookList bookList;} View Code   这里我们就简单介绍这几种方式 最后做一个总结 1 接收参数2 1使用Action的属性接受参数在Action中定义需要接受的属性并写它的set/get方法。3 2使用DomainModel接受参数创建实体类定义需要接受的属性并set/get方法在Action中创建实体类名属性。并在界面进行指定。4 3使用ModelDriver接受参数在Action中实现ModelDriver实体类名接口并实现方法返回当前需要转换的对象删除set/get方法并对 对象 进行实例化并取消指定。5 4request6 5获取List集合中的参数。获取多个参数。7 8 第一种接收参数的方法直接在action类中创建相应的属性和getter和setter和前端的name名字相同。eg:前端的username在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值9 10 第二种接受参数的方法使用DomainModel将username 和password两个属性封装为一个类User必须是标准的JavaBean在action中声明这个属性private User user; 同时为user设置getter和setter在前端中的name需要设置为user.name和user.password,才能映射成功 11 12 第三种接收参数的方法使用ModelDrivenT接口这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化eg: private User user new User(); 同时不需要getter和setter。前端的name也只需要写username和password就可以不需要再加域了。这种方法时最推荐的方法因为可以减少前后端的耦合   8.处理结果类型  我们来看一下struts.xml中过滤器的一句话 result namesuccess/result.jsp/result 这句话等同于result /result.jsp/result 说明name的默认值就是success 【Structs2处理流程】 用户请求Structs框架控制器(Action)Structs框架视图资源 返回String提供代码复用性有利于框架分离。 【Action中五种内置属性(com.opensymphony.xwork2.Action)】   转载于:https://www.cnblogs.com/DemoLee/p/6291341.html
http://www.huolong8.cn/news/276012/

相关文章:

  • 学校网站建设总结网站如何申请域名
  • 网站建设考试卷a卷专业建站教程
  • 网站开发薪水中国建设招标信息网站
  • 统一门户网站网站如何调用手机淘宝做淘宝客
  • 怎么建设ftp网站丝印网版制作
  • 网站做视频的怎么赚钱广州市越秀区建设局官方网站
  • 建设网站能赚钱哪里有网站建设的企业
  • 微网站哪家好交互设计软件
  • 有什么网站可以做推广网站做超链接的方式有哪些
  • 网站建设课程下载网站建设 步骤
  • 海宁网站设计公司近期新闻热点事件摘抄
  • 鞍山建立公司网站的步骤杭州网站制作蒙特
  • 购物电商型网站怎么做网站开发新闻管理系统的背景
  • 怎么给网站做绿标做网站 就上凡科网
  • 网站备案查询 美橙网哪个网站做兼职可以赚钱
  • 宁波专业品牌网站制作外包入驻微信小程序多少钱
  • 办公室装修专业网站上海杨浦区建设网站
  • 网站开发项目答辩主持词电子商务系统设计报告
  • 网站排名顾问网站建设分销协议
  • 教学方面网站建设wordpress文章编辑函数
  • 咸宁网站定制wordpress建设下载网站
  • 单页面淘宝客网站wordpress开启七牛
  • 电子政务 和网站建设总结wordpress菜单 链接
  • 挂别人公司做网站可以吗how to use wordpress ninja forms
  • 诚聘高新网站开发工程师重庆所有做网站的公司有哪些
  • 网站模板下载百度云链接怎么做的房管局在线咨询
  • 网络公司如何开网站年底 网站备案
  • eclipse 做网站亳州市建设局网站
  • 网站模板尺寸云安区学校网站建设统计表
  • 做国外网站 国外人能看到吗万网租空间 网站