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

昆明城乡和住房建设局网站wordpress支持内网和外网

昆明城乡和住房建设局网站,wordpress支持内网和外网,wordpress设置留言板,php自己做网站吗本文主要包括以下内容 struts2常用常量的定义与意义struts2处理流程拆分struts动态方法调用,使用通配符接收请求参数中文编码问题自定义类型转化器访问或添加request/session/application常用servlet对象的获取 struts2常用常量的定义与意义 struts2处理流程 每一次请求都会创…本文主要包括以下内容 struts2常用常量的定义与意义struts2处理流程拆分struts动态方法调用,使用通配符接收请求参数中文编码问题自定义类型转化器访问或添加request/session/application常用servlet对象的获取 struts2常用常量的定义与意义 struts2处理流程 每一次请求都会创建一个新的action,所以struts2的action是线程安全的 拆分struts 动态方法调用 (不建议使用)动态方法调用http://localhost:8080/struts2day02/customer/addCustomer!updateCustomer应该执行addCustomer使用!updateCustomer,在请求addCustomer就执行了updateCustomer 关闭动态调用的功能 struts.enable.DynamicMethodInvocation false 使用通配符 package nameorders namespace/orders extendsmypackageaction nameorders_* classcn.itcast.action.OrdersAction method{1}result typedispatcher namesuccess/orders/success.jsp/result/action/package 接收请求参数 采用基本类型接收请求参数(get/post) 在Action类中定义与请求参数同名的属性struts2便能自动接收请求参数并赋予给同名属性。 请求路径http://localhost:8080/test/view.action?id100 public class ProductAction{ private Integer id; public void setId(Integer id){//struts2通过反射技术调用与请求参数同名的属性的settter方法来获取请求参数值 this.id id; } public Integer getId(){return id;} } 采用复合类型接收请求参数 请求路径http://localhost:8080/test/view.action?product.id78 public class ProductAction{ private Product product; public void setProduct(Product product){this.product product;} public Product getProduct(){return product;} } struts2首先通过反射技术调用Product的默认构造函数创建product对象然后再通过反射技术调用product中与请求参数同名的属性的setter方法来获取请求参数值 中文乱码问题 过滤器实现 package com.zj.filter;import java.io.IOException; import java.util.Map;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper;public class EncodeFilter implements Filter {private FilterConfig confignull;private ServletContext contextnull;private String encodenull;Overridepublic void destroy() {// TODO 自动生成的方法存根}Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {// TODO 自动生成的方法存根//响应乱码解决arg1.setCharacterEncoding(encode);arg1.setContentType(text/html;charsetencode);//请求乱码解决arg2.doFilter(new MyHttpServletRequest((HttpServletRequest) arg0), arg1);}Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO 自动生成的方法存根this.configarg0;this.contextarg0.getServletContext();this.encodecontext.getInitParameter(encode);}private class MyHttpServletRequest extends HttpServletRequestWrapper{private HttpServletRequest requestnull;private boolean isNotEncodetrue;public MyHttpServletRequest(HttpServletRequest request) {super(request);// TODO 自动生成的构造函数存根this.requestrequest;}Overridepublic String getParameter(String name) {// TODO 自动生成的方法存根return getParameterValues(name)null?null:getParameterValues(name)[0];}Overridepublic MapString, String[] getParameterMap() {// TODO 自动生成的方法存根try{if(request.getMethod().equalsIgnoreCase(post)){request.setCharacterEncoding(encode);return request.getParameterMap();}else if(request.getMethod().equalsIgnoreCase(GET)){MapString,String[] maprequest.getParameterMap();if(isNotEncode){for(Map.EntryString, String[] entry:map.entrySet()){String []vsentry.getValue();for(int i0;ivs.length;i){vs[i]new String(vs[i].getBytes(iso8859-1),encode);}}isNotEncodefalse;}return map;}else{return request.getParameterMap();}//return super.getParameterMap();}catch(Exception e){e.printStackTrace();throw new RuntimeException();}}Overridepublic String[] getParameterValues(String name) {// TODO 自动生成的方法存根return getParameterMap().get(name);}}} web.xml中注册 !-- 过滤器配置开始 --filterdescription全站乱码过滤器/descriptionfilter-nameEncodeFilter/filter-namefilter-classcom.zj.filter.EncodeFilter/filter-class/filterfilter-mappingfilter-nameEncodeFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping 解决乱码的另一方法 !-- 全站参数配置 --context-paramdescription全站编码配置/descriptionparam-nameencode/param-nameparam-valueutf-8/param-value/context-param 自定义类型转化器,解决输入Date类型的问题 1、编写一个类继承 com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter 2、覆盖掉其中的convertValue方法 public Object convertValue(MapString, Object context, Object value,Class toType)context:OGNL表达式的上下文value:实际的值。用户输入的都是字符串但他是一个String数组。toType目标类型public class DateConvertor extends DefaultTypeConverter {/*context:ognl表达式的上下文value用户输入的值 保存数据时或者模型中的属性。用户输入的值是String数组toType:目标类型*/Overridepublic Object convertValue(MapString, Object context, Object value,Class toType) {DateFormat df new SimpleDateFormat(yyyy/MM/dd);if(toTypeDate.class){//2013/05/31-----java.util.Date 保存数据时String strValue ((String[])value)[0];try {return df.parse(strValue);} catch (ParseException e) {throw new RuntimeException(e);}}else{//java.util.Date-----2013/05/31 获取数据时Date dValue (Date)value;return df.format(dValue);}}} 3、注册类型转换器 3.1局部类型转换器只对当前的Action有效 具体做法在动作类相同的包中建立一个名称是“动作类名-conversion.properties”的配置文件 文件中增加以下内容要验证的字段验证器的类全名 birthdaycn.itcast.convertor.DateConvertor 3.2全局类型转换器对所有的Action都有效 具体做法在WEB-INF/classes目录下建立一个名称为xwork-conversion.properties的配置文件 文件中增加以下内容目标类型全名验证器的类全名 java.util.Datecn.itcast.convertor.DateConvertor 注意如果转换失败Struts2框架会寻找nameinput的结果页面 访问或添加request/session/application /*** */ package cn.itcast.action;import java.io.Serializable; import java.util.Map;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;/*** author wzhting**/ //域范围 public class ScopeAction extends ActionSupport implements Serializable {//向各大域范围存放点数据Overridepublic String execute() throws Exception {ActionContext ac ActionContext.getContext();MapString,Object applicationMap ac.getApplication();//这个就是ServletContext对象中维护的那个MapapplicationMap.put(p, application_p);// ServletContext.setAttribute(key,object);MapString,Object sessionMap ac.getSession();//这个就是HttpSession对象中维护的那个MapsessionMap.put(p, session_p);// HttpSession.setAttribute(key,object);ac.put(p, request_p);//相当于ServletRequest.setAttribute(key,obj); return super.execute();}} 在jsp中可以得到 applicationScope生存周期是整个应用 sessionScope生存周期是整个会话 requestScope生存周期是一次请求 body应用范围${applicationScope.p}br/ 会话范围${sessionScope.p}br/请求范围${requestScope.p}br//body ### 常用servlet对象的获取 ### 方式一通过ServletActionContext直接获取 //方式一public String execute1(){ServletContext sc ServletActionContext.getServletContext();System.out.println(sc);ServletRequest request ServletActionContext.getRequest();System.out.println(request);return SUCCESS;} ### 方式二实现指定接口由struts框架运行时注入 public class WebObjectAction extends ActionSupport implements Serializable,ServletContextAware,ServletRequestAware,ServletResponseAware {private ServletContext context;private HttpServletRequest request;private HttpServletResponse response;//方式二public String execute2(){System.out.println(context);System.out.println(request);System.out.println(response);return SUCCESS;}public void setServletContext(ServletContext context) {//如果动作类实现了ServletContextAware接口就会自动调用该方法this.context context;}public void setServletRequest(HttpServletRequest request) {this.request request;}public void setServletResponse(HttpServletResponse response) {this.response response;}} 完成
http://wiki.neutronadmin.com/news/145095/

相关文章:

  • 做网站的把网站写成一行什么是网络营销的任务
  • 淮安建设工程协会网站查询系统高端网站如何建设
  • 如何修改网站后台密码软件开发全流程
  • wordpress文章站app外包公司推荐
  • 网站网站平台建设方案做一个大型网站
  • 借个网站备案号沈阳快速建站公司有哪些
  • 河源网站建设多少钱好看的网站模版
  • 网站排名公司哪家好京东这样的网站怎么做
  • 应聘网站开发题目视觉设计包括什么
  • 任丘市做网站价格潍坊网站制作公司哪家比较好
  • 设计网站的优缺点分析中国搜索
  • 老网站改版国内用wordpress建设
  • 专门做视频的网站查公司的国家网站有哪些
  • 微网站模板怎么做新媒体营销实训报告总结
  • 做网站意向客户wordpress跳转到老域名
  • 有哪些可以做外链的网站电商运营招聘
  • 求个没封的w站2021软件建设银行网上银行网站
  • 网站设计与制作费用做pc端网站信息
  • 怎么做信息发布型网站平面设计学下来多少钱
  • 柳州 网站建设wordpress评论框提示
  • 无锡做网站优化在哪个网站去租地方做收废站
  • 局域网建设网站如何访问wordpress 版微信小程序
  • 延安网站设计宿迁沭阳网站建设
  • 东莞市建设监督网站首页开发一款游戏需要多少资金
  • 荣成城乡建设局网站随州网站seo诊断
  • 购物商城网站建设方案做网站想注册商标是哪一类
  • 新网站如何做搜索引擎收录沈阳高端网站设计
  • 济南网站推广网站模板大小
  • 做网站一定要效果图吗discuz论坛门户网站模板
  • 漳州网站开发去博大钱少a厦门正规的网站建设公司